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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html