From b25c284c762863330646e18cdae2fa27c30085e3 Mon Sep 17 00:00:00 2001 From: sos Date: Tue, 18 Nov 2003 15:23:37 +0000 Subject: [PATCH] Work around the problem that some CDROM drives might return different TOC's for the same media!! that borks up GEOM. Although this looks like bad HW the following patch removes the chance for GEOM panic'ing. Approved by: re@ --- sys/dev/ata/atapi-cd.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/dev/ata/atapi-cd.c b/sys/dev/ata/atapi-cd.c index 38369b95f11..50da0057317 100644 --- a/sys/dev/ata/atapi-cd.c +++ b/sys/dev/ata/atapi-cd.c @@ -1186,13 +1186,15 @@ acd_read_toc(struct acd_softc *cdp) int8_t ccb[16]; struct g_provider *pp; - bzero(&cdp->toc, sizeof(cdp->toc)); - bzero(ccb, sizeof(ccb)); + if (acd_test_ready(cdp->device)) + return; - if (acd_test_ready(cdp->device) != 0) + if (!(cdp->device->flags & ATA_D_MEDIA_CHANGED)) return; cdp->device->flags &= ~ATA_D_MEDIA_CHANGED; + bzero(&cdp->toc, sizeof(cdp->toc)); + bzero(ccb, sizeof(ccb)); cdp->disk_size = -1; /* hack for GEOM SOS */ len = sizeof(struct ioc_toc_header) + sizeof(struct cd_toc_entry); -- 2.45.2