diff options
author | Olaf Faaland <[email protected]> | 2018-02-26 20:32:49 -0500 |
---|---|---|
committer | Tony Hutter <[email protected]> | 2018-05-07 17:19:56 -0700 |
commit | 927f40d08949879e333b3ec4a55aec651409ae21 (patch) | |
tree | 17b81743cf9b88396bc60fa8816443f1b9073ea3 /include/sys/mmp.h | |
parent | 6356d50e673d0718fe3ceb1ec9fca17eeab0c189 (diff) |
Record skipped MMP writes in multihost_history
Once per pass through the MMP thread's loop, the vdev tree is walked to
find a suitable leaf to write the next MMP block to. If no such leaf is
found, the thread sleeps for a while and resumes at the top of the loop.
Add an entry to multihost_history when no leaf can be found, and record
the reason in the error column. The error code for such entries is a
bitfield, displayed in hex:
0x1 At least one vdev (interior or leaf) was not writeable.
0x2 At least one writeable leaf vdev was found, but it had a pending
MMP write.
timestamp = the time in seconds since the epoch when no leaf could be
found originally.
duration = the time (in ns) during which no MMP block was written for
this reason. This does not include the preceeding inter-write period
nor the following inter-write period.
vdev_guid = the number of sequential cycles of the MMP thread looop when
this occurred.
Sample output, truncated to fit:
For records of skipped MMP writes the right-most column, vdev_path, is
reported as "-".
id txg timestamp error duration mmp_delay vdev_guid ...
936 11 1520036441 0 146264 891422313 1740883117838 ...
937 11 1520036441 0 163956 888356657 7320395061548 ...
938 11 1520036442 0 130690 885314969 7320395061548 ...
939 11 1520036442 0 2001068577 882296582 1740883117838 ...
940 11 1520036443 0 161806 882296582 7320395061548 ...
941 11 1520036443 0x2 0 998020546 1 ...
942 11 1520036444 0 136585 998020546 7320395061548 ...
943 11 1520036444 0x2 0 998020257 1 ...
944 11 1520036445 5 2002662964 994160219 1740883117838 ...
945 11 1520036445 0x2 998073118 994160219 3 ...
946 11 1520036447 0 247136 994160219 7320395061548 ...
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Olaf Faaland <[email protected]>
Closes #7212
Diffstat (limited to 'include/sys/mmp.h')
-rw-r--r-- | include/sys/mmp.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/sys/mmp.h b/include/sys/mmp.h index 1ce685f9c..c99c124e6 100644 --- a/include/sys/mmp.h +++ b/include/sys/mmp.h @@ -43,6 +43,7 @@ typedef struct mmp_thread { uberblock_t mmp_ub; /* last ub written by sync */ zio_t *mmp_zio_root; /* root of mmp write zios */ uint64_t mmp_kstat_id; /* unique id for next MMP write kstat */ + int mmp_skip_error; /* reason for last skipped write */ } mmp_thread_t; |