diff options
author | Pavel Zakharov <[email protected]> | 2016-03-10 10:16:02 -0500 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-05-08 21:30:10 -0700 |
commit | 4a0ee12af8967a859c3607530aaef466e21cebc3 (patch) | |
tree | ae5079139035cfa72fdc0e4673775954ab9f8206 /include | |
parent | ca0845d59efe5881d14e0bb90603a5152eb07227 (diff) |
OpenZFS 8961 - SPA load/import should tell us why it failed
Problem
=======
When we fail to open or import a storage pool, we typically don't
get any additional diagnostic information, just "no pool found" or
"can not import".
While there may be no additional user-consumable information, we should
at least make this situation easier to debug/diagnose for developers
and support. For example, we could start by using `zfs_dbgmsg()`
to log each thing that we try when importing, and which things
failed. E.g. "tried uberblock of txg X from label Y of device Z". Also,
we could log each of the stages that we go through in `spa_load_impl()`.
Solution
========
Following the cleanup to `spa_load_impl()`, debug messages have been
added to every point of failure in that function. Additionally,
debug messages have been added to strategic places, such as
`vdev_disk_open()`.
Authored by: Pavel Zakharov <[email protected]>
Reviewed by: George Wilson <[email protected]>
Reviewed by: Matthew Ahrens <[email protected]>
Reviewed by: Andrew Stormont <[email protected]>
Approved by: Dan McDonald <[email protected]>
Ported-by: Tim Chase <[email protected]>
Signed-off-by: Tim Chase <[email protected]>
OpenZFS-issue: https://illumos.org/issues/8961
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/418079e0
Closes #7459
Diffstat (limited to 'include')
-rw-r--r-- | include/sys/spa.h | 2 | ||||
-rw-r--r-- | include/sys/vdev.h | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/include/sys/spa.h b/include/sys/spa.h index 89f4f5107..1172468ad 100644 --- a/include/sys/spa.h +++ b/include/sys/spa.h @@ -985,6 +985,8 @@ extern uint64_t spa_deadman_synctime(spa_t *spa); extern uint64_t spa_deadman_ziotime(spa_t *spa); /* Miscellaneous support routines */ +extern void spa_load_failed(spa_t *spa, const char *fmt, ...); +extern void spa_load_note(spa_t *spa, const char *fmt, ...); extern void spa_activate_mos_feature(spa_t *spa, const char *feature, dmu_tx_t *tx); extern void spa_deactivate_mos_feature(spa_t *spa, const char *feature); diff --git a/include/sys/vdev.h b/include/sys/vdev.h index 511d4d0b6..a9b99331b 100644 --- a/include/sys/vdev.h +++ b/include/sys/vdev.h @@ -21,7 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2011, 2015 by Delphix. All rights reserved. + * Copyright (c) 2011, 2016 by Delphix. All rights reserved. */ #ifndef _SYS_VDEV_H @@ -47,6 +47,7 @@ typedef enum vdev_dtl_type { extern int zfs_nocacheflush; +extern void vdev_dbgmsg(vdev_t *vd, const char *fmt, ...); extern int vdev_open(vdev_t *); extern void vdev_open_children(vdev_t *); extern int vdev_validate(vdev_t *, boolean_t); |