diff options
author | yl194034 <none@none> | 2007-01-23 18:37:34 -0800 |
---|---|---|
committer | yl194034 <none@none> | 2007-01-23 18:37:34 -0800 |
commit | a60be22acbb80aed1c647876c5d71f32e99d2e34 (patch) | |
tree | b55589e5914e5b2fb113e255da0192c9950da335 /usr/src | |
parent | 0f2cfdbb2dd724b1f649ce31d87b7964153dc0bc (diff) | |
download | illumos-gate-a60be22acbb80aed1c647876c5d71f32e99d2e34.tar.gz |
6505720 wrong default disk label on x86, for an audio cd
Contributed by Juergen Keil <jk@tools.de>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/io/scsi/targets/sd.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/usr/src/uts/common/io/scsi/targets/sd.c b/usr/src/uts/common/io/scsi/targets/sd.c index 9fe7a311a4..6d2cdc6bff 100644 --- a/usr/src/uts/common/io/scsi/targets/sd.c +++ b/usr/src/uts/common/io/scsi/targets/sd.c @@ -4481,6 +4481,14 @@ sd_validate_geometry(struct sd_lun *un, int path_flag) return (EACCES); case SD_CMD_FAILURE: ASSERT(mutex_owned(SD_MUTEX(un))); + /* + * A multisession audio cd can have an unreadable + * fdisk sector, but there could be readable data + * in a separate session. Accept this and let + * the code build a default disk label later on. + */ + if (ISCD(un)) + break; return (ENOMEM); } @@ -4915,8 +4923,9 @@ sd_read_fdisk(struct sd_lun *un, uint_t capacity, int lbasize, int path_flag) if (rval != 0) { SD_ERROR(SD_LOG_ATTACH_DETACH, un, "sd_read_fdisk: fdisk read err\n"); - kmem_free(bufp, blocksize); - return (SD_CMD_FAILURE); + bzero(un->un_fmap, sizeof (struct fmap) * FD_NUMPART); + rval = SD_CMD_FAILURE; + goto done; } mbp = (struct mboot *)bufp; |