]> git.proxmox.com Git - mirror_zfs.git/commit
Record skipped MMP writes in multihost_history
authorOlaf Faaland <faaland1@llnl.gov>
Tue, 27 Feb 2018 01:32:49 +0000 (20:32 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 6 Mar 2018 23:15:15 +0000 (15:15 -0800)
commitd2160d053838e36df83e5fe3a9ca20abad588a4c
treeea58f98b59babc15857ac8171059577fb00fa54d
parent14c240cede5b38a761deedc2e23821a3f983da00
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]