ZTS: test response of various sync methods under different failmodes

These are all the same shape: set up the pool to suspend on first write,
then perform some write+sync operation. The pool should suspend, and the
sync operation should respond according to the failmode= property.

We test fsync(), msync() and two forms of write() (open with O_SYNC, and
async with sync=always), which all take slightly different paths to
zil_commit() and back.

A helper function is included to do the write+sync sequence with mmap()
and msync(), since I didn't find a convenient tool to do that.

Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Closes #17398
This commit is contained in:
Rob Norris
2025-05-16 15:25:59 +10:00
committed by Brian Behlendorf
parent b270663e8a
commit 1f8c39ddb2
15 changed files with 541 additions and 2 deletions
+5 -1
View File
@@ -725,7 +725,11 @@ tests = ['fadvise_willneed']
tags = ['functional', 'fadvise']
[tests/functional/failmode]
tests = ['failmode_dmu_tx_wait', 'failmode_dmu_tx_continue']
tests = ['failmode_dmu_tx_wait', 'failmode_dmu_tx_continue',
'failmode_fsync_wait', 'failmode_fsync_continue',
'failmode_msync_wait', 'failmode_msync_continue',
'failmode_osync_wait', 'failmode_osync_continue',
'failmode_syncalways_wait', 'failmode_syncalways_continue']
tags = ['functional', 'failmode']
[tests/functional/fallocate]