mirror of
https://github.com/versity/scoutfs.git
synced 2025-12-23 05:25:18 +00:00
Due to an iput race, the "unlink wait for open on other mount" subtest can fail. If the unlink happens inline, then the test passes. But if the orphan scanner has to complete the unlink work, it's possible that there won't be enough log merge work for the scanner to do the cleanup before we look at the seq index. Add SCOUTFS_TRIGGER_FINALIZE_OURS, to allow forcing a log merge. Add new counters, merges_started and merges_completed, so that tests can see that a merge has happened. Then we have to wait for the orphan scanner to do its work. Add a new counter, orphan_scan_empty, that increments each time the scanner walks the entire inode space without finding any orphans. Once the test sees that counter increment, it should be safe to check the seq index and see that the unlinked inode is gone. Signed-off-by: Chris Kirby <ckirby@versity.com>
28 lines
906 B
Plaintext
28 lines
906 B
Plaintext
== basic unlink deletes
|
|
ino found in dseq index
|
|
ino not found in dseq index
|
|
== local open-unlink waits for close to delete
|
|
contents after rm: contents
|
|
ino found in dseq index
|
|
ino not found in dseq index
|
|
== multiple local opens are protected
|
|
contents after rm 1: contents
|
|
contents after rm 2: contents
|
|
ino found in dseq index
|
|
ino not found in dseq index
|
|
== remote unopened unlink deletes
|
|
ino not found in dseq index
|
|
ino not found in dseq index
|
|
== unlink wait for open on other mount
|
|
mount 0 contents after mount 1 rm: contents
|
|
ino found in dseq index
|
|
ino found in dseq index
|
|
stat: cannot stat '/mnt/test/test/inode-deletion/badfile': No such file or directory
|
|
ino not found in dseq index
|
|
ino not found in dseq index
|
|
== lots of deletions use one open map
|
|
== open files survive remote scanning orphans
|
|
mount 0 contents after mount 1 remounted: contents
|
|
ino not found in dseq index
|
|
ino not found in dseq index
|