]> granicus.if.org Git - zfs/commit
Record skipped MMP writes in multihost_history
authorOlaf Faaland <faaland1@llnl.gov>
Tue, 27 Feb 2018 01:32:49 +0000 (20:32 -0500)
committerTony Hutter <hutter2@llnl.gov>
Tue, 8 May 2018 00:19:56 +0000 (17:19 -0700)
commit927f40d08949879e333b3ec4a55aec651409ae21
tree17b81743cf9b88396bc60fa8816443f1b9073ea3
parent6356d50e673d0718fe3ceb1ec9fca17eeab0c189
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 <behlendorf1@llnl.gov>
Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
Closes #7212
include/sys/mmp.h
include/sys/spa.h
module/zfs/mmp.c
module/zfs/spa_stats.c
tests/runfiles/linux.run
tests/zfs-tests/tests/functional/mmp/Makefile.am
tests/zfs-tests/tests/functional/mmp/mmp.kshlib
tests/zfs-tests/tests/functional/mmp/mmp_on_uberblocks.ksh
tests/zfs-tests/tests/functional/mmp/mmp_reset_interval.ksh
tests/zfs-tests/tests/functional/mmp/mmp_write_uberblocks.ksh
tests/zfs-tests/tests/functional/mmp/multihost_history.ksh [new file with mode: 0755]