diff options
author | dfr <dfr@FreeBSD.org> | 2008-12-10 10:46:34 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2008-12-10 10:46:34 +0000 |
commit | 5319dab7a9493f7ff6e7fd10ea8eea2d00d16669 (patch) | |
tree | a0004219fbf6916669261a1f084c4ca3af01d03a /sys/boot | |
parent | 5c136f32ed16508d6aad90c4de48153890ff71dd (diff) | |
download | FreeBSD-src-5319dab7a9493f7ff6e7fd10ea8eea2d00d16669.zip FreeBSD-src-5319dab7a9493f7ff6e7fd10ea8eea2d00d16669.tar.gz |
Don't get confused if we encounter a device which is part of a raidz or raidz2
pool while probing for vdevs.
PR: 129539
Submitted by: Paul Wootton (paul at fletchermoorland dot co dot uk)
Diffstat (limited to 'sys/boot')
-rw-r--r-- | sys/boot/zfs/zfsimpl.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/boot/zfs/zfsimpl.c b/sys/boot/zfs/zfsimpl.c index c7c4c65..a6dc99e 100644 --- a/sys/boot/zfs/zfsimpl.c +++ b/sys/boot/zfs/zfsimpl.c @@ -623,7 +623,7 @@ vdev_probe(vdev_read_t *read, void *read_priv, spa_t **spap) uint64_t pool_txg, pool_guid; const char *pool_name; const unsigned char *vdevs; - int i; + int i, rc; char upbuf[1024]; const struct uberblock *up; @@ -723,7 +723,9 @@ vdev_probe(vdev_read_t *read, void *read_priv, spa_t **spap) DATA_TYPE_NVLIST, 0, &vdevs)) { return (EIO); } - vdev_init_from_nvlist(vdevs, &top_vdev); + rc = vdev_init_from_nvlist(vdevs, &top_vdev); + if (rc) + return (rc); /* * Add the toplevel vdev to the pool if its not already there. |