This patch adds _require_metadata_replay to detect whether or not filesystem supports metadata replay. This should be used when: 1. create file A 2. write file A 3. fsync file A 4. write file A 5. create file B 6. fsync file B 7. crash! In this case, if filesystem supports metadata_replay, file A's data written by #4 should be recovered. Otherwise, file A is recovered to #3. Cc: Filipe Manana <fdmanana@xxxxxxxx> Cc: Eric Sandeen <sandeen@xxxxxxxxxx> Signed-off-by: Jaegeuk Kim <jaegeuk@xxxxxxxxxx> --- common/rc | 18 ++++++++++++++++++ tests/generic/066 | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/common/rc b/common/rc index 1ed9df5..e6e8d1f 100644 --- a/common/rc +++ b/common/rc @@ -2372,6 +2372,24 @@ _require_metadata_journaling() esac } +# Does this filesystem support metadata replay? +# Filesystem is able to recover metadata which were not written by fsync +# exlicitly. But another fsync'ed metadata should be followed by them. +_require_metadata_replay() +{ + _require_metadata_journaling $1 + + case "$FSTYP" in + f2fs) + # f2fs supports metadata_journaling, but does not recover any + # intermediate metadata which was not fsync'ed explicitly. + _notrun "$FSTYP does not support metadata replay" + ;; + *) + ;; + esac +} + # Does fiemap support? _require_fiemap() { diff --git a/tests/generic/066 b/tests/generic/066 index cb36506..3fefda4 100755 --- a/tests/generic/066 +++ b/tests/generic/066 @@ -61,7 +61,7 @@ _need_to_be_root _require_scratch _require_dm_flakey _require_attrs -_require_metadata_journaling $SCRATCH_DEV +_require_metadata_replay $SCRATCH_DEV _crash_and_mount() { -- 2.1.1 -- To unsubscribe from this list: send the line "unsubscribe fstests" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html