diff options
author | Olaf Faaland <[email protected]> | 2019-05-09 10:08:05 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-05-09 10:08:05 -0700 |
commit | ca95f70dff2915a1a5d838ecafc28646f5f5a42e (patch) | |
tree | 3561bf9dba925382137582c7034d8eaf60ded8f9 /include/sys | |
parent | b689de85e8c78b9dc03c1bd4c3ca0f4e75714e92 (diff) |
zpool import progress kstat
When an import requires a long MMP activity check, or when the user
requests pool recovery, the import make take a long time. The user may
not know why, or be able to tell whether the import is progressing or is
hung.
Add a kstat which lists all imports currently being processed by the
kernel (currently only one at a time is possible, but the kstat allows
for more than one). The kstat is /proc/spl/kstat/zfs/import_progress.
The kstat contents are as follows:
pool_guid load_state multihost_secs max_txg pool_name
16667015954387398 3 15 0 tank3
load_state: the value of spa_load_state
multihost_secs: seconds until the end of the multihost activity
check; if over, or none required, this is 0
max_txg: current spa_load_max_txg, if rewind is occurring
This could be used by outside tools, such as a pacemaker resource agent,
to report import progress, or as a part of manual troubleshooting. The
zpool import subcommand could also be modified to report this
information.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Olaf Faaland <[email protected]>
Closes #8696
Diffstat (limited to 'include/sys')
-rw-r--r-- | include/sys/spa.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/sys/spa.h b/include/sys/spa.h index 343977b30..23434edbc 100644 --- a/include/sys/spa.h +++ b/include/sys/spa.h @@ -965,6 +965,14 @@ extern void spa_iostats_trim_add(spa_t *spa, trim_type_t type, uint64_t extents_written, uint64_t bytes_written, uint64_t extents_skipped, uint64_t bytes_skipped, uint64_t extents_failed, uint64_t bytes_failed); +extern void spa_import_progress_add(spa_t *spa); +extern void spa_import_progress_remove(uint64_t spa_guid); +extern int spa_import_progress_set_mmp_check(uint64_t pool_guid, + uint64_t mmp_sec_remaining); +extern int spa_import_progress_set_max_txg(uint64_t pool_guid, + uint64_t max_txg); +extern int spa_import_progress_set_state(uint64_t pool_guid, + spa_load_state_t spa_load_state); /* Pool configuration locks */ extern int spa_config_tryenter(spa_t *spa, int locks, void *tag, krw_t rw); |