diff options
-rw-r--r-- | src/stat.c | 4 | ||||
-rwxr-xr-x | tests.sh | 21 | ||||
-rw-r--r-- | tests/test_automount.out | 1 |
3 files changed, 26 insertions, 0 deletions
@@ -310,6 +310,10 @@ int bfs_stat(int at_fd, const char *at_path, enum bfs_stat_flags flags, struct b at_flags |= AT_SYMLINK_NOFOLLOW; } +#ifdef AT_NO_AUTOMOUNT + at_flags |= AT_NO_AUTOMOUNT; +#endif + int x_flags = 0; #ifdef AT_STATX_DONT_SYNC if (flags & BFS_STAT_NOSYNC) { @@ -827,6 +827,8 @@ sudo_tests=( test_inum_bind_mount test_type_bind_mount test_xtype_bind_mount + + test_automount ) case "$UNAME" in @@ -3019,6 +3021,25 @@ function test_xtype_bind_mount() { return $ret } +function test_automount() { + # bfs shouldn't trigger automounts unless it descends into them + + skip_if fail command -v systemd-mount &>/dev/null + + rm -rf scratch/* + mkdir scratch/{foo,mnt} + quiet sudo systemd-mount -A -o bind basic scratch/mnt + + local before=$(inum scratch/mnt) + bfs_diff scratch -inum "$before" -prune + local ret=$? + local after=$(inum scratch/mnt) + + quiet sudo systemd-umount scratch/mnt + + ((ret == 0 && before == after)) +} + function set_acl() { case "$UNAME" in Darwin) diff --git a/tests/test_automount.out b/tests/test_automount.out new file mode 100644 index 0000000..99c7511 --- /dev/null +++ b/tests/test_automount.out @@ -0,0 +1 @@ +scratch/mnt |