A new test in 8.20 fail because "mount point 'a/b' already traversed" is not 
emitted

[chroot-i486] root:/usr/src/coreutils-8.20$ uname -r; mount --version
3.4.15
mount from util-linux 2.22.1 (libmount 2.22.0: debug)

[chroot-i486] root:/usr/src/coreutils-8.20$ FORCE_UNSAFE_CONFIGURE=1 
./configure --prefix=/usr --disable-nls --enable-no-install-program=kill,uptime
...
[chroot-i486] root:/usr/src/coreutils-8.20$ make check 
TESTS=tests/du/bind-mount-dir-cycle.sh
...
FAIL: tests/du/bind-mount-dir-cycle.sh (exit: 1)
...
+ mkdir -p a/b
+ mount --bind a a/b
+ echo a
+ echo 'du: mount point '\''a/b'\'' already traversed'
+ du a
+ sed 's/^[0-9][0-9]*   //' out
+ mv k out
+ compare exp-err err
+ compare_dev_null_ exp-err err
+ test 2 = 2
+ test xexp-err = x/dev/null
+ test xerr = x/dev/null
+ return 2
+ case $? in
+ compare_ exp-err err
+ diff -u exp-err err
--- exp-err     2012-10-25 09:24:00.000000000 +0200
+++ err 2012-10-25 09:24:00.000000000 +0200
@@ -1 +1,6 @@
-du: mount point 'a/b' already traversed
+du: WARNING: Circular directory structure.
+This almost certainly means that you have a corrupted file system.
+NOTIFY YOUR SYSTEM MANAGER.
+The following directory is part of the cycle:
+  'a/b'
+
+ fail=1
+ compare exp out
+ compare_dev_null_ exp out
+ test 2 = 2
+ test xexp = x/dev/null
+ test xout = x/dev/null
+ return 2
+ case $? in
+ compare_ exp out
+ diff -u exp out
+ Exit 1
+ set +e
+ exit 1
+ exit 1
+ remove_tmp_
+ __st=1
+ cleanup_
+ umount a/b

I attached the result of strace -o du-bind-mount-dir-cycle.log -s100 -f du a

Gilles
3467  execve("/usr/bin/du", ["du", "a"], [/* 30 vars */]) = 0
3467  brk(0)                            = 0xb7ff4000
3467  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7789000
3467  access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
3467  open("/etc/ld.so.cache", O_RDONLY) = 3
3467  fstat64(3, {st_mode=S_IFREG|0644, st_size=17043, ...}) = 0
3467  mmap2(NULL, 17043, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7784000
3467  close(3)                          = 0
3467  open("/lib/libc.so.6", O_RDONLY)  = 3
3467  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240l\1\0004\0\0\0\4\353\25\0\0\0\0\0004\0 \0\n\0(\0#\0 \0\6\0\0\0004\0\0\0004\0\0\0004\0\0\0@\1\0\0@\1\0\0\5\0\0\0\4\0\0\0\3\0\0\0\360\214\24\0\360\214\24\0\360\214\24\0"..., 512) = 512
3467  fstat64(3, {st_mode=S_IFREG|0755, st_size=1677576, ...}) = 0
3467  mmap2(NULL, 1452280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7621000
3467  mprotect(0xb777d000, 4096, PROT_NONE) = 0
3467  mmap2(0xb777e000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15c) = 0xb777e000
3467  mmap2(0xb7781000, 10488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7781000
3467  close(3)                          = 0
3467  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7620000
3467  set_thread_area({entry_number:-1 -> 6, base_addr:0xb76206c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
3467  mprotect(0xb777e000, 8192, PROT_READ) = 0
3467  mprotect(0xb77be000, 4096, PROT_READ) = 0
3467  mprotect(0xb77a8000, 4096, PROT_READ) = 0
3467  munmap(0xb7784000, 17043)         = 0
3467  brk(0)                            = 0xb7ff4000
3467  brk(0xb8015000)                   = 0xb8015000
3467  open("/etc/mtab", O_RDONLY)       = 3
3467  fstat64(3, {st_mode=S_IFREG|0644, st_size=449, ...}) = 0
3467  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7788000
3467  read(3, "rootfs / rootfs rw 0 0\n/dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 / ext3 rw,relatime,err"..., 4096) = 449
3467  read(3, "", 4096)                 = 0
3467  close(3)                          = 0
3467  munmap(0xb7788000, 4096)          = 0
3467  stat64("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3467  stat64("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3467  stat64("/dev/pts", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
3467  stat64("/sys", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
3467  stat64("/dev/shm", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=40, ...}) = 0
3467  fstatat64(AT_FDCWD, "a", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
3467  openat(AT_FDCWD, "a", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW) = 3
3467  fcntl64(3, F_GETFD)               = 0
3467  fcntl64(3, F_SETFD, FD_CLOEXEC)   = 0
3467  fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
3467  fcntl64(3, F_GETFL)               = 0x38800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW)
3467  fcntl64(3, F_SETFD, FD_CLOEXEC)   = 0
3467  fstatat64(AT_FDCWD, "a", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
3467  fcntl64(3, F_DUPFD, 3)            = 4
3467  fcntl64(4, F_GETFD)               = 0
3467  fcntl64(4, F_SETFD, FD_CLOEXEC)   = 0
3467  getdents64(3, /* 3 entries */, 32768) = 72
3467  getdents64(3, /* 0 entries */, 32768) = 0
3467  close(3)                          = 0
3467  fstatat64(4, "b", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
3467  open("/usr/lib/charset.alias", O_RDONLY|O_LARGEFILE|O_NOFOLLOW) = -1 ENOENT (No such file or directory)
3467  write(2, "du: ", 4)               = 4
3467  write(2, "WARNING: Circular directory structure.\nThis almost certainly means that you have a corrupted file sy"..., 188) = 188
3467  write(2, "\n", 1)                 = 1
3467  close(4)                          = 0
3467  fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
3467  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7788000
3467  write(1, "4\ta\n", 4)             = 4
3467  close(1)                          = 0
3467  munmap(0xb7788000, 4096)          = 0
3467  close(2)                          = 0
3467  exit_group(1)                     = ?

Reply via email to