]> granicus.if.org Git - zfs/commitdiff
Fix don't zero_label when replace with spare
authorChunwei Chen <tuxoko@gmail.com>
Mon, 24 Jul 2017 19:49:27 +0000 (12:49 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 24 Jul 2017 19:49:27 +0000 (12:49 -0700)
When replacing a disk with non-wholedisk spare, we shouldn't zero_label
it. The wholedisk case already skip it. In fact, zero_label function
will fail saying device busy because it's already opened exclusively,
but since there's no error checking, the replace command will succeed,
causing great confusion.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
Closes #6369

cmd/zpool/zpool_vdev.c

index b0b6396844c27ea31cb317827e8b3c4fc2ff2861..4c3793d6eb58eb5450d8d926ae5a5ab1910acd38 100644 (file)
@@ -1227,7 +1227,8 @@ make_disks(zpool_handle_t *zhp, nvlist_t *nv)
                        if (is_mpath_whole_disk(path))
                                update_vdev_config_dev_strs(nv);
 
-                       (void) zero_label(path);
+                       if (!is_spare(NULL, path))
+                               (void) zero_label(path);
                        return (0);
                }