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 <behlendorf1@llnl.gov> Reviewed-by: Mark Maybee <mark.maybee@delphix.com> Co-authored-by: Srikanth N S <srikanth.nagasubbaraoseetharaman@hpe.com> Signed-off-by: Vipin Kumar Verma <vipin.verma@hpe.com> Closes #12088
This commit is contained in:
parent
1a1302f8c4
commit
dce1bf99ec
|
@ -32,6 +32,7 @@
|
|||
* Copyright (c) 2017, Intel Corporation.
|
||||
* Copyright (c) 2019, loli10K <ezomori.nozomu@gmail.com>
|
||||
* Copyright (c) 2021, Colm Buckley <colm@tuatha.org>
|
||||
* 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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue