summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorLin Ling <Lin.Ling@Sun.COM>2008-09-10 22:29:43 -0700
committerLin Ling <Lin.Ling@Sun.COM>2008-09-10 22:29:43 -0700
commit5ef3d48f3eade4d7bb0730f19e26c782232c09ad (patch)
tree22fbbf3f10f5bb3ddbe525ec71310cea4cc1f1c0 /usr/src
parent355518542cbbe7ea7378c1ec2cc282d465467484 (diff)
downloadillumos-joyent-5ef3d48f3eade4d7bb0730f19e26c782232c09ad.tar.gz
6747087 fix for 6724326 introduced a hole
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/fs/zfs/vdev_disk.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/usr/src/uts/common/fs/zfs/vdev_disk.c b/usr/src/uts/common/fs/zfs/vdev_disk.c
index 98b4d23d6e..fe4e97524e 100644
--- a/usr/src/uts/common/fs/zfs/vdev_disk.c
+++ b/usr/src/uts/common/fs/zfs/vdev_disk.c
@@ -608,13 +608,15 @@ vdev_disk_read_rootlabel(char *devpath, char *devid, nvlist_t **config)
uint64_t s, size;
int l;
ddi_devid_t tmpdevid;
- int error = 0;
+ int error;
char *minor_name;
/*
* Read the device label and build the nvlist.
*/
- if (devid != NULL && ddi_devid_str_decode(devid, &tmpdevid,
+ error = ldi_open_by_name(devpath, FREAD, kcred, &vd_lh, zfs_li);
+
+ if (error && devid != NULL && ddi_devid_str_decode(devid, &tmpdevid,
&minor_name) == 0) {
error = ldi_open_by_devid(tmpdevid, minor_name,
spa_mode, kcred, &vd_lh, zfs_li);
@@ -622,8 +624,7 @@ vdev_disk_read_rootlabel(char *devpath, char *devid, nvlist_t **config)
ddi_devid_str_free(minor_name);
}
- if (error && (error = ldi_open_by_name(devpath, FREAD, kcred,
- &vd_lh, zfs_li)) != 0)
+ if (error)
return (error);
if (ldi_get_size(vd_lh, &s)) {