RE: nilfs_cleanerd Function not implemented

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Filesystem Development]     [Linux BTRFS]     [Linux CIFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux