This patch series modifies fssum to be able to verify POSIX fsync/fdatasync guarantees. In particular, it allows single files/symlinks to be passed as input, which allows us to verify an fsync on a single file without checking the entire directory. It also adds an option for non-recursive directory traversal, which is useful because POSIX fsync doesn't guarantee that all subdirectories are synced. Finally, it adds a flag that allows file size to be ignored (currently enabled by default). This is useful because POSIX fsync of a directory doesn't guarantee that the data in the children is persisted. These changes will be followed up with several Crashmonkey [1] tests which make use of these changes. [1] https://github.com/utsaslab/crashmonkey Changes since v1: - Change readlink to readlinkat to fix bug - Added helper sum_one function to simplify single file input - Moved fstat -> fstatat change and both of the former into separate commit Manually verified that all of the tests that use fssum still pass for each commit: tests/btrfs/083 tests/btrfs/050 tests/btrfs/007 tests/btrfs/016 tests/btrfs/128 tests/btrfs/040 tests/btrfs/092 tests/btrfs/087 tests/btrfs/039 tests/btrfs/127 tests/btrfs/044 tests/btrfs/144 tests/btrfs/168 tests/btrfs/134 tests/btrfs/045 tests/btrfs/129 tests/btrfs/043 tests/btrfs/145 tests/btrfs/191 tests/btrfs/147 tests/btrfs/030 tests/btrfs/077 tests/btrfs/155 tests/btrfs/133 tests/btrfs/038 tests/btrfs/053 tests/btrfs/189 tests/btrfs/084 tests/btrfs/135 tests/btrfs/200 tests/btrfs/178 tests/btrfs/051 tests/generic/474 tests/generic/547 Arvind Raghavan (7): src/fssum: Make sum_file_data global src/fssum: Refactoring changes for recursive traversal src/fssum: Refactor recursive traversal src/fssum: Add flag -R for non-recursive mode src/fssum: Add a flag for including file size in checksum src/fssum: Allow single file input src/fssum: Fix whitespace in usage src/fssum.c | 354 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 203 insertions(+), 151 deletions(-) -- 2.20.1