diff options
author | vermavipinkumar <[email protected]> | 2021-05-26 00:02:07 +0530 |
---|---|---|
committer | GitHub <[email protected]> | 2021-05-25 12:32:07 -0600 |
commit | dce1bf99ecbcb6a82756329f4a87cea6c8284277 (patch) | |
tree | aa64197c46de6f1549925fa5310157c51eb08a4d | |
parent | 1a1302f8c4727b90ac83a3d3bcf995fa0516a11b (diff) |
Propagate vdev state due to invalid label corruption
Propagate vdev child state to parents on invalid label
Add VDEV_AUX_BAD_LABEL to print_import_config()
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Mark Maybee <[email protected]>
Co-authored-by: Srikanth N S <[email protected]>
Signed-off-by: Vipin Kumar Verma <[email protected]>
Closes #12088
-rw-r--r-- | cmd/zpool/zpool_main.c | 9 | ||||
-rw-r--r-- | module/zfs/vdev.c | 3 |
2 files changed, 11 insertions, 1 deletions
diff --git a/cmd/zpool/zpool_main.c b/cmd/zpool/zpool_main.c index 8d809acb2..d7d93c4da 100644 --- a/cmd/zpool/zpool_main.c +++ b/cmd/zpool/zpool_main.c @@ -32,6 +32,7 @@ * Copyright (c) 2017, Intel Corporation. * Copyright (c) 2019, loli10K <[email protected]> * Copyright (c) 2021, Colm Buckley <[email protected]> + * Copyright [2021] Hewlett Packard Enterprise Development LP */ #include <assert.h> @@ -2379,6 +2380,10 @@ print_status_config(zpool_handle_t *zhp, status_cbdata_t *cb, const char *name, (void) printf(gettext("all children offline")); break; + case VDEV_AUX_BAD_LABEL: + (void) printf(gettext("invalid label")); + break; + default: (void) printf(gettext("corrupted data")); break; @@ -2521,6 +2526,10 @@ print_import_config(status_cbdata_t *cb, const char *name, nvlist_t *nv, (void) printf(gettext("all children offline")); break; + case VDEV_AUX_BAD_LABEL: + (void) printf(gettext("invalid label")); + break; + default: (void) printf(gettext("corrupted data")); break; diff --git a/module/zfs/vdev.c b/module/zfs/vdev.c index d00782d93..5e14d71f1 100644 --- a/module/zfs/vdev.c +++ b/module/zfs/vdev.c @@ -28,6 +28,7 @@ * Copyright 2017 Joyent, Inc. * Copyright (c) 2017, Intel Corporation. * Copyright (c) 2019, Datto Inc. All rights reserved. + * Copyright [2021] Hewlett Packard Enterprise Development LP */ #include <sys/zfs_context.h> @@ -2222,7 +2223,7 @@ vdev_validate(vdev_t *vd) txg = spa_last_synced_txg(spa); if ((label = vdev_label_read_config(vd, txg)) == NULL) { - vdev_set_state(vd, B_TRUE, VDEV_STATE_CANT_OPEN, + vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, VDEV_AUX_BAD_LABEL); vdev_dbgmsg(vd, "vdev_validate: failed reading config for " "txg %llu", (u_longlong_t)txg); |