diff options
author | Lin Ling <Lin.Ling@Sun.COM> | 2008-09-10 22:29:43 -0700 |
---|---|---|
committer | Lin Ling <Lin.Ling@Sun.COM> | 2008-09-10 22:29:43 -0700 |
commit | 5ef3d48f3eade4d7bb0730f19e26c782232c09ad (patch) | |
tree | 22fbbf3f10f5bb3ddbe525ec71310cea4cc1f1c0 /usr/src | |
parent | 355518542cbbe7ea7378c1ec2cc282d465467484 (diff) | |
download | illumos-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.c | 9 |
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)) { |