CIFS mounted drive issue

Natanael Copa natanael.copa at gmail.com
Mon Oct 18 13:09:33 UTC 2010


I (or an Alpine linux user) got bitten by the issue below too.
http://redmine.alpinelinux.org/issues/show/445

So I started to dig around a bit. Here is what i have come up with:
* it happens with busybox ls and coreutils ls.
* it works on 32bit (e)glibc systems. ie ubuntu.

So I compared the straces and as expected, the difference is stat()
and stat64().

>From uclibc:
open("/mnt/iso/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fstat(3, 0xbffff148)                    = -1 EOVERFLOW (Value too
large for defined data type)

>From ubuntu/eglibc:
open("/mnt/iso/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 3
fstat64(3, {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0

Then i thought that there are probably some flag that is supposed to
do so fstat = fstat64 or something, and if i know those GNU people
correctly, they check this in a configure script. this turned out to
be correct. In the configure output I see this when compiling
coreutils:

checking for _LARGEFILE_SOURCE value needed for large files... no
...
checking for _FILE_OFFSET_BITS value needed for large files... 64
...

So, I think uclibc is not doing what expected at some place.
Where or how, I don't know.

Any ideas?

On Fri, Apr 30, 2010 at 12:22 PM, J. Schneider <yankee at cell.de> wrote:
> Hi all,
>
> as Yegor wrote last month I go the same behavior on openwrt r21196 and
> tested on mips (ar7161 routerboard 450G) with:
>
> kernel 2.6.3.32.12 and 2.6.33.3
> uclibc 0.9.30.x and 0.9.31
>
> After mounting a w2k3 or w2k8 share with mount.cifs, ls -la breaks with:
> ls: can't open '/mnt': Value too large for defined data type
> root at OpenWrt:/tmp# strace ls -al
> ......
> stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=20708, ...}) = 0
> mprotect(0x2ab7b000, 4096, PROT_READ)   = 0
> mprotect(0x2aabc000, 4096, PROT_READ)   = 0
> ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
> ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
> getuid()                                = 0
> time([1272618468])                      = 1272618468
> ioctl(0, 0x40087468, 0x7fe1d3f8)        = 0
> ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
> lstat64(0x7fe1deeb, 0x7fe1d2d8)         = 0
> brk(0)                                  = 0x47f000
> brk(0x480000)                           = 0x480000
> open("/mnt", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3
> fstat(3, 0x7fe1d250)                    = -1 EOVERFLOW (Value too large for
> defined data type)
> close(3)                                = 0
> brk(0x481000)                           = 0x481000
> ioctl(2147483647, TIOCNXCL, 0x7fe1d1d8) = -1 EBADF (Bad file descriptor)
> brk(0x482000)                           = 0x482000
> write(2, "ls: can't open '/mnt': Value too"..., 61ls: can't open '/mnt':
> Value too large for defined data type
> ) = 61
> exit(1)                                 = ?
>
>
> A samba share from a centos5 machine works fine.
> root at OpenWrt:/tmp# strace ls -al /mnt
> ......
> stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=20708, ...}) = 0
> mprotect(0x2ab7b000, 4096, PROT_READ)   = 0
> mprotect(0x2aabc000, 4096, PROT_READ)   = 0
> ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
> ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
> getuid()                                = 0
> time([1272621607])                      = 1272621607
> ioctl(0, 0x40087468, 0x7f9c90c8)        = 0
> ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
> lstat64(0x463488, 0x7f9c8fa8)           = 0
> brk(0)                                  = 0x47f000
> brk(0x480000)                           = 0x480000
> open(".", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3
> fstat(3, {st_mode=S_IFDIR|S_ISVTX|0777, st_size=340, ...}) = 0
> fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
> brk(0x481000)                           = 0x481000
> getdents64(3, /* 17 entries */, 4096)   = 488
> brk(0x482000)                           = 0x482000
>
>
> I'm happy for any hints
>
> Many Thanks
> Joerg
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc
>



-- 
Natanael Copa


More information about the uClibc mailing list