On 02/17/22 14:12, Richard W.M. Jones wrote:
On Thu, Feb 17, 2022 at 01:41:04PM +0100, Laszlo Ersek wrote:
I've got a patch for the md-create chunk issue, and passed --disable-php to ./configure. Now the "test-fuse" case is failing with:
01: checking initial files exist 02: checking initial files contain expected content 03: checking file modes and sizes of initial content 04: checking unlink libguestfs: error: lstatns: /new: No such file or directory 05: checking symbolic link libguestfs: error: lstatns: /symlink: No such file or directory 06: checking readlink 07: checking hard link libguestfs: error: lstatns: /link: No such file or directory nlink of 'hello.txt' was 1 (expected 2) test_fuse() returned -1 /usr/sbin/fuser /tmp/testfusemUdOym guestunmount /tmp/testfusemUdOym
Should I disable FUSE as well?
I have these two skips:
export SKIP_TEST_FUSE_UMOUNT_RACE_SH=1 export SKIP_TEST_GUESTMOUNT_FD=1
However I don't think the should affect this particular test, so there must be some other problem.
Using this might help to diagnose it:
LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1 make check -C fuse
It seems to be related to caching. I couldn't narrow it down very well because there seem to be two levels of caching, one from "standard FUSE", another from "lib/fuse.c" ("we also implement a readdir cache"). Regardless, blocking the test program right after the fork(), with a loop on a volatile int dummy, attaching separate gdb instances to both child and parent, and unblocking both loops, I can successfully step through the test case. The difference is apparently how much time passes between the various link, stat, etc calls. I've tried adding "GUESTFS_MOUNT_LOCAL_CACHETIMEOUT, 0" to guestfs_mount_local(), but it made no difference. We already have a caching-related "#if 0" in this test case; I think it's more of the same. Thanks Laszlo