summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorGabriel Carrillo <Gabriel.Carrillo@Sun.COM>2008-11-19 22:10:12 -0800
committerGabriel Carrillo <Gabriel.Carrillo@Sun.COM>2008-11-19 22:10:12 -0800
commitc813bb043488e2a10089b24b1f44ec8cb8f8b7aa (patch)
treead0758fb7a6da2fc614358bbd1192cb40ae05eeb /usr/src
parent275e36bf470b114b8fe92ae8574f8db1a3d7c053 (diff)
downloadillumos-joyent-c813bb043488e2a10089b24b1f44ec8cb8f8b7aa.tar.gz
6708257 DVD-ROM (not OS installation disk) can not mount from guest domain of LDOM 1.0.2
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/io/cmlb.c4
-rw-r--r--usr/src/uts/sun4v/io/vdc.c12
2 files changed, 14 insertions, 2 deletions
diff --git a/usr/src/uts/common/io/cmlb.c b/usr/src/uts/common/io/cmlb.c
index d381e38831..83c962afb9 100644
--- a/usr/src/uts/common/io/cmlb.c
+++ b/usr/src/uts/common/io/cmlb.c
@@ -2854,8 +2854,6 @@ cmlb_build_default_label(struct cmlb_lun *cl, void *tg_cookie)
}
cl->cl_g.dkg_apc = 0;
- cl->cl_vtoc.v_nparts = V_NUMPAR;
- cl->cl_vtoc.v_version = V_VERSION;
/* Add backup slice */
cl->cl_vtoc.v_part[2].p_start = 0;
@@ -2894,6 +2892,8 @@ cmlb_build_default_label(struct cmlb_lun *cl, void *tg_cookie)
cl->cl_g.dkg_intrlv = 1;
cl->cl_vtoc.v_sanity = VTOC_SANE;
+ cl->cl_vtoc.v_nparts = V_NUMPAR;
+ cl->cl_vtoc.v_version = V_VERSION;
cl->cl_f_geometry_is_valid = TRUE;
cl->cl_label_from_media = CMLB_LABEL_UNDEF;
diff --git a/usr/src/uts/sun4v/io/vdc.c b/usr/src/uts/sun4v/io/vdc.c
index 867491ca6a..b9f7c20826 100644
--- a/usr/src/uts/sun4v/io/vdc.c
+++ b/usr/src/uts/sun4v/io/vdc.c
@@ -7856,6 +7856,18 @@ vdc_validate_geometry(vdc_t *vdc)
}
/*
+ * Most CD/DVDs do not have a disk label and the label is
+ * generated by the disk driver. So the on-disk label check
+ * below may fail and we return now to avoid this problem.
+ */
+ if (vdc->vdisk_media == VD_MEDIA_CD ||
+ vdc->vdisk_media == VD_MEDIA_DVD) {
+ mutex_enter(&vdc->lock);
+ vdc_store_label_vtoc(vdc, &geom, &vtoc);
+ return (0);
+ }
+
+ /*
* Read disk label from start of disk
*/
buf = kmem_alloc(sizeof (buf_t), KM_SLEEP);