Hi dexen, thank you for a prompt reply. >> I am in the process of migrating an embedded project from >> ext2 to nilfs2 and have a problem with nilfs_cleanerd. It >> does not start on mount and I cannot start it manually. >> (...) > > I'd suspect futex() or open(..., O_RDWR|O_NOFOLLOW). Do you have > `CONFIG_FUTEX' enabled in your embedded kernel? Yes, futex is enabled. # zcat /proc/config.gz | grep CONFIG_FUTEX CONFIG_FUTEX=y > Relevant snippet from strace of my nilfs_cleanerd (version nilfs- > utils-2.0.23): ... > 864 statfs("/dev/shm", {f_type=0x1021994, f_bsize=4096, > f_blocks=86016, > f_bfree=86010, f_bavail=86010, f_files=754077, f_ffree=754075, f_fsid={0, 0}, > f_namelen=255, f_frsize=4096} > ) = 0 > 864 futex(0x7f551010d31c, FUTEX_WAKE_PRIVATE, 2147483647) = 0 > 864 open("/dev/shm/sem.nilfs-cleaner-2067", O_RDWR|O_NOFOLLOW) = -1 > ENOENT > (No such file or directory) > 864 lstat("/dev/shm/sem.qLTneb", 0x7fffff54fb70) = -1 ENOENT (No > such file or > directory) > 864 open("/dev/shm/sem.qLTneb", O_RDWR|O_CREAT|O_EXCL, 0700) = 6 Hmmm, quite different. > Btw., you may not be seeing the failed (with `Function not implemented') > syscall in strace, if the libc itself signals the `Function not implemented' > error instead of issuing the syscall. Consider using ``ltrace'' instead, > to intercept all lib calls. I cannot get any clues from ltrace either: # ltrace -f /sbin/nilfs_cleanerd /dev/sdb1 __libc_start_main(0x804c20b, 2, 0xbfc16354, 0x804dcd0, 0x804dcc0 <unfinished ...> strrchr("/sbin/nilfs_cleanerd", '/') = "/nilfs_cleanerd" strrchr("/sbin/nilfs_cleanerd", '/') = "/nilfs_cleanerd" getopt_long(2, 0xbfc16354, "c:hnp:V", 0x804de20, 0xbfc1528c) = -1 myrealpath(0xbfc16c5c, 0xbfc15296, 4098, 0x804de20, 0xbfc1528c) = 0xbfc15296 strdup("/dev/sdb1") = 0x9268008 fork( <unfinished ...> [pid 3534] --- SIGSTOP (Stopped (signal)) --- [pid 3534] --- SIGSTOP (Stopped (signal)) --- [pid 3533] <... fork resumed> ) = 3534 [pid 3533] --- SIGCHLD (Child exited) --- [pid 3533] _exit(0 <unfinished ...> [pid 3533] +++ exited (status 0) +++ +++ exited (status 1) +++ BTW: CONFIG_SHMEM is not enabled: # zcat /proc/config.gz | grep CONFIG_SHMEM # CONFIG_SHMEM is not set Is it needed? I am a bit confused by the kernel help text: "...Disabling this option replaces shmem and tmpfs with the much simpler ramfs code, which may be appropriate on small systems without swap." ...wait a moment... I just recompiled the kernel with CONFIG_SHMEM enabled, but no success. Same result as before :-( What caught my attention in the first strace was: sendto(-1218631408, umovestr: Input/output error It happens before the futex call and to me the socketfd (-1218631408) seems invalid. Just a wild shot... /S-G -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html