summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/zfs/vdev_disk.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/fs/zfs/vdev_disk.c')
-rw-r--r--usr/src/uts/common/fs/zfs/vdev_disk.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/usr/src/uts/common/fs/zfs/vdev_disk.c b/usr/src/uts/common/fs/zfs/vdev_disk.c
index fe4e97524e..2c6ea543ad 100644
--- a/usr/src/uts/common/fs/zfs/vdev_disk.c
+++ b/usr/src/uts/common/fs/zfs/vdev_disk.c
@@ -608,15 +608,13 @@ vdev_disk_read_rootlabel(char *devpath, char *devid, nvlist_t **config)
uint64_t s, size;
int l;
ddi_devid_t tmpdevid;
- int error;
+ int error = -1;
char *minor_name;
/*
* Read the device label and build the nvlist.
*/
- error = ldi_open_by_name(devpath, FREAD, kcred, &vd_lh, zfs_li);
-
- if (error && devid != NULL && ddi_devid_str_decode(devid, &tmpdevid,
+ if (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);
@@ -624,7 +622,8 @@ vdev_disk_read_rootlabel(char *devpath, char *devid, nvlist_t **config)
ddi_devid_str_free(minor_name);
}
- if (error)
+ if (error && (error = ldi_open_by_name(devpath, FREAD, kcred, &vd_lh,
+ zfs_li)))
return (error);
if (ldi_get_size(vd_lh, &s)) {