mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Report pool suspended due to MMP
When the pool is suspended, record whether it was due to an I/O error or due to MMP writes failing to succeed within the required time. Change spa_suspended from uint8_t to zio_suspend_reason_t to store the reason. When userspace queries pool status via spa_tryimport(), report the reason the pool was suspended in a new key, ZPOOL_CONFIG_SUSPENDED_REASON. In libzfs, when interpreting the returned config nvlist, report suspension due to MMP with a new pool status enum value, ZPOOL_STATUS_IO_FAILURE_MMP. In status_callback(), which generates and emits the message when 'zpool status' is executed, add a case to print an appropriate message for the new pool status enum value. Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tony Hutter <hutter2@llnl.gov> Signed-off-by: Olaf Faaland <faaland1@llnl.gov> Closes #7296
This commit is contained in:
committed by
Tony Hutter
parent
c234706270
commit
3eb3a13628
@@ -6395,6 +6395,15 @@ status_callback(zpool_handle_t *zhp, void *data)
|
||||
"to be recovered.\n"));
|
||||
break;
|
||||
|
||||
case ZPOOL_STATUS_IO_FAILURE_MMP:
|
||||
(void) printf(gettext("status: The pool is suspended because "
|
||||
"multihost writes failed or were delayed;\n\tanother "
|
||||
"system could import the pool undetected.\n"));
|
||||
(void) printf(gettext("action: Make sure the pool's devices "
|
||||
"are connected, then reboot your system and\n\timport the "
|
||||
"pool.\n"));
|
||||
break;
|
||||
|
||||
case ZPOOL_STATUS_IO_FAILURE_WAIT:
|
||||
case ZPOOL_STATUS_IO_FAILURE_CONTINUE:
|
||||
(void) printf(gettext("status: One or more devices are "
|
||||
|
||||
Reference in New Issue
Block a user