From: bunder2015 Date: Thu, 3 Jan 2019 20:15:46 +0000 (-0500) Subject: Add missing MMP status code to libzfs_status X-Git-Tag: zfs-0.8.0-rc3~22 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5365b0747a51edeef9c24213929eafb0444ccb78;p=zfs Add missing MMP status code to libzfs_status When MMP was merged the status codes in libzfs_status were not updated to add the status code for ZPOOL_STATUS_IO_FAILURE_MMP. This commit corrects this and adds comments to help keep track of which code is used for which status. Reviewed-by: Olaf Faaland Reviewed-by: Brian Behlendorf Signed-off-by: bunder2015 Closes #8148 Closes #8222 --- diff --git a/include/libzfs.h b/include/libzfs.h index 762d57bef..c764e92dd 100644 --- a/include/libzfs.h +++ b/include/libzfs.h @@ -303,6 +303,8 @@ typedef enum { /* * The following correspond to faults as defined in the (fault.fs.zfs.*) * event namespace. Each is associated with a corresponding message ID. + * This must be kept in sync with the zfs_msgid_table in + * lib/libzfs/libzfs_status.c. */ ZPOOL_STATUS_CORRUPT_CACHE, /* corrupt /kernel/drv/zpool.cache */ ZPOOL_STATUS_MISSING_DEV_R, /* missing device with replicas */ diff --git a/lib/libzfs/libzfs_status.c b/lib/libzfs/libzfs_status.c index e49d79baa..ebf497db6 100644 --- a/lib/libzfs/libzfs_status.c +++ b/lib/libzfs/libzfs_status.c @@ -51,27 +51,41 @@ /* * Message ID table. This must be kept in sync with the ZPOOL_STATUS_* defines - * in libzfs.h. Note that there are some status results which go past the end - * of this table, and hence have no associated message ID. + * in include/libzfs.h. Note that there are some status results which go past + * the end of this table, and hence have no associated message ID. */ static char *zfs_msgid_table[] = { - "ZFS-8000-14", - "ZFS-8000-2Q", - "ZFS-8000-3C", - "ZFS-8000-4J", - "ZFS-8000-5E", - "ZFS-8000-6X", - "ZFS-8000-72", - "ZFS-8000-8A", - "ZFS-8000-9P", - "ZFS-8000-A5", - "ZFS-8000-EY", - "ZFS-8000-EY", - "ZFS-8000-EY", - "ZFS-8000-HC", - "ZFS-8000-JQ", - "ZFS-8000-K4", - "ZFS-8000-ER", + "ZFS-8000-14", /* ZPOOL_STATUS_CORRUPT_CACHE */ + "ZFS-8000-2Q", /* ZPOOL_STATUS_MISSING_DEV_R */ + "ZFS-8000-3C", /* ZPOOL_STATUS_MISSING_DEV_NR */ + "ZFS-8000-4J", /* ZPOOL_STATUS_CORRUPT_LABEL_R */ + "ZFS-8000-5E", /* ZPOOL_STATUS_CORRUPT_LABEL_NR */ + "ZFS-8000-6X", /* ZPOOL_STATUS_BAD_GUID_SUM */ + "ZFS-8000-72", /* ZPOOL_STATUS_CORRUPT_POOL */ + "ZFS-8000-8A", /* ZPOOL_STATUS_CORRUPT_DATA */ + "ZFS-8000-9P", /* ZPOOL_STATUS_FAILING_DEV */ + "ZFS-8000-A5", /* ZPOOL_STATUS_VERSION_NEWER */ + "ZFS-8000-EY", /* ZPOOL_STATUS_HOSTID_MISMATCH */ + "ZFS-8000-EY", /* ZPOOL_STATUS_HOSTID_ACTIVE */ + "ZFS-8000-EY", /* ZPOOL_STATUS_HOSTID_REQUIRED */ + "ZFS-8000-HC", /* ZPOOL_STATUS_IO_FAILURE_WAIT */ + "ZFS-8000-JQ", /* ZPOOL_STATUS_IO_FAILURE_CONTINUE */ + "ZFS-8000-MM", /* ZPOOL_STATUS_IO_FAILURE_MMP */ + "ZFS-8000-K4", /* ZPOOL_STATUS_BAD_LOG */ + "ZFS-8000-ER", /* ZPOOL_STATUS_ERRATA */ + /* + * The following results have no message ID. + * ZPOOL_STATUS_UNSUP_FEAT_READ + * ZPOOL_STATUS_UNSUP_FEAT_WRITE + * ZPOOL_STATUS_FAULTED_DEV_R + * ZPOOL_STATUS_FAULTED_DEV_NR + * ZPOOL_STATUS_VERSION_OLDER + * ZPOOL_STATUS_FEAT_DISABLED + * ZPOOL_STATUS_RESILVERING + * ZPOOL_STATUS_OFFLINE_DEV + * ZPOOL_STATUS_REMOVED_DEV + * ZPOOL_STATUS_OK + */ }; #define NMSGID (sizeof (zfs_msgid_table) / sizeof (zfs_msgid_table[0])) diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_errata3.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_errata3.ksh index f4d97f147..f51f81ce8 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_errata3.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_errata3.ksh @@ -62,7 +62,8 @@ log_assert "Verify that Errata 3 is properly handled" uncompress_pool log_must zpool import -d /$TESTPOOL/ $POOL_NAME -log_must eval "zpool status | grep -q Errata" +log_must eval "zpool status $POOL_NAME | grep -q Errata" +log_must eval "zpool status $POOL_NAME | grep -q ZFS-8000-ER" log_must eval "echo 'password' | zfs load-key $POOL_NAME/testfs" log_must eval "echo 'password' | zfs load-key $POOL_NAME/testvol" @@ -95,5 +96,6 @@ log_must zfs destroy -r $POOL_NAME/testvol log_must zpool export $POOL_NAME log_must zpool import -d /$TESTPOOL/ $POOL_NAME -log_mustnot eval "zpool status | grep -q Errata" +log_mustnot eval "zpool status $POOL_NAME | grep -q Errata" +log_mustnot eval "zpool status $POOL_NAME | grep -q ZFS-8000-ER" log_pass "Errata 3 is properly handled"