mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	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
							
								
									ab6717cba6
								
							
						
					
					
						commit
						d6bedbbc44
					
				| @ -32,6 +32,7 @@ | |||||||
|  * Copyright (c) 2017, Intel Corporation. |  * Copyright (c) 2017, Intel Corporation. | ||||||
|  * Copyright (c) 2019, loli10K <ezomori.nozomu@gmail.com> |  * Copyright (c) 2019, loli10K <ezomori.nozomu@gmail.com> | ||||||
|  * Copyright (c) 2021, Colm Buckley <colm@tuatha.org> |  * Copyright (c) 2021, Colm Buckley <colm@tuatha.org> | ||||||
|  |  * Copyright [2021] Hewlett Packard Enterprise Development LP | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <assert.h> | #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")); | 			(void) printf(gettext("all children offline")); | ||||||
| 			break; | 			break; | ||||||
| 
 | 
 | ||||||
|  | 		case VDEV_AUX_BAD_LABEL: | ||||||
|  | 			(void) printf(gettext("invalid label")); | ||||||
|  | 			break; | ||||||
|  | 
 | ||||||
| 		default: | 		default: | ||||||
| 			(void) printf(gettext("corrupted data")); | 			(void) printf(gettext("corrupted data")); | ||||||
| 			break; | 			break; | ||||||
| @ -2521,6 +2526,10 @@ print_import_config(status_cbdata_t *cb, const char *name, nvlist_t *nv, | |||||||
| 			(void) printf(gettext("all children offline")); | 			(void) printf(gettext("all children offline")); | ||||||
| 			break; | 			break; | ||||||
| 
 | 
 | ||||||
|  | 		case VDEV_AUX_BAD_LABEL: | ||||||
|  | 			(void) printf(gettext("invalid label")); | ||||||
|  | 			break; | ||||||
|  | 
 | ||||||
| 		default: | 		default: | ||||||
| 			(void) printf(gettext("corrupted data")); | 			(void) printf(gettext("corrupted data")); | ||||||
| 			break; | 			break; | ||||||
|  | |||||||
| @ -28,6 +28,7 @@ | |||||||
|  * Copyright 2017 Joyent, Inc. |  * Copyright 2017 Joyent, Inc. | ||||||
|  * Copyright (c) 2017, Intel Corporation. |  * Copyright (c) 2017, Intel Corporation. | ||||||
|  * Copyright (c) 2019, Datto Inc. All rights reserved. |  * Copyright (c) 2019, Datto Inc. All rights reserved. | ||||||
|  |  * Copyright [2021] Hewlett Packard Enterprise Development LP | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <sys/zfs_context.h> | #include <sys/zfs_context.h> | ||||||
| @ -2222,7 +2223,7 @@ vdev_validate(vdev_t *vd) | |||||||
| 		txg = spa_last_synced_txg(spa); | 		txg = spa_last_synced_txg(spa); | ||||||
| 
 | 
 | ||||||
| 	if ((label = vdev_label_read_config(vd, txg)) == NULL) { | 	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_AUX_BAD_LABEL); | ||||||
| 		vdev_dbgmsg(vd, "vdev_validate: failed reading config for " | 		vdev_dbgmsg(vd, "vdev_validate: failed reading config for " | ||||||
| 		    "txg %llu", (u_longlong_t)txg); | 		    "txg %llu", (u_longlong_t)txg); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 vermavipinkumar
						vermavipinkumar