]> granicus.if.org Git - zfs/commitdiff
Fix import wrong spare/l2 device when path change
authorChunwei Chen <david.chen@osnexus.com>
Thu, 25 May 2017 22:56:12 +0000 (15:56 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 1 Jun 2017 13:39:42 +0000 (06:39 -0700)
If, for example, your aux device was /dev/sdc, but now the aux device is
removed and /dev/sdc points to other device. zpool import will still
use that device and corrupt it.

The problem is that the spa_validate_aux in spa_import, rather than
validate the on-disk label, it would actually write label to disk. We
remove them since spa_load_{spares,l2cache} seems to do everything we
need and they would actually validate on-disk label.

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

module/zfs/spa.c

index 70756ce49ce493af779dbce6b05b4e73bdf97d31..031535321322fff67822142188a208570b07cad3 100644 (file)
@@ -4114,12 +4114,6 @@ spa_import(char *pool, nvlist_t *config, nvlist_t *props, uint64_t flags)
 
        VERIFY(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE,
            &nvroot) == 0);
-       if (error == 0)
-               error = spa_validate_aux(spa, nvroot, -1ULL,
-                   VDEV_ALLOC_SPARE);
-       if (error == 0)
-               error = spa_validate_aux(spa, nvroot, -1ULL,
-                   VDEV_ALLOC_L2CACHE);
        spa_config_exit(spa, SCL_ALL, FTAG);
 
        if (props != NULL)