CIFS mounted drive issue

Yegor Yefremov yegorslists at googlemail.com
Tue Mar 30 08:34:10 UTC 2010


I have problems making "ls -l /mnt" on CIFS mounted drives. Instead of
file listing I get following error: Value too large for defined data
type.

My system is:

CPU: ARM9 ks8695
kernel 2.6.32/33
uClibc 0.9.27

I had no problems with the same uClibc and kernel 2.6.26. I have also
tried openwrt with uClibc 0.9.30.1/2, but with the same result: ls -l
fails.

Large File Support was enabled in both uClibc and busybox. I even
tried non busybox ls, but with the same result.

The same kernel make no problem with ARM Debian.

I think it has something to do with fstat call. Please compare strace
outputs from uCliux and Debian.

uClinux:

lstat64("/mnt", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0

brk(0)                                  = 0x76000

brk(0x77000)                            = 0x77000

open("/mnt", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 3

fstat(3, 0xbed38ce0)                    = -1 EOVERFLOW (Value too
large for defined data type)

close(3)                                = 0

brk(0x78000)                            = 0x78000

ioctl(2147483647, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbed38c2c) = -1
EBADF (Bad file descriptor)

brk(0x79000)                            = 0x79000

write(2, "ls: can't open '/mnt': Value too"..., 61ls: can't open
'/mnt': Value too large for defined data type

) = 61


Debian:

open("/mnt", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3

fstat64(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0

fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)

getdents64(3, /* 6 entries */, 16384)   = 176

lstat64("/mnt/oldinitrd.gz", {st_mode=S_IFREG|0755, st_size=2739802, ...}) = 0

lgetxattr("/mnt/oldinitrd.gz", "security.selinux", 0x2f248, 255) = -1 EOPNOTSUPP

 (Operation not supported)

getxattr("/mnt/oldinitrd.gz", "system.posix_acl_access", 0x0, 0) = -1 EOPNOTSUPP

 (Operation not supported)

lstat64("/mnt/oldkparam", {st_mode=S_IFREG|0755, st_size=31, ...}) = 0

lgetxattr("/mnt/oldkparam", "security.selinux", 0x2f260, 255) = -1
EOPNOTSUPP (Operation not supported)

getxattr("/mnt/oldkparam", "system.posix_acl_access", 0x0, 0) = -1
EOPNOTSUPP (Operation not supported)

lstat64("/mnt/oldzImage", {st_mode=S_IFREG|0755, st_size=1959948, ...}) = 0

lgetxattr("/mnt/oldzImage", "security.selinux", 0x2f260, 255) = -1
EOPNOTSUPP (Operation not supported)

getxattr("/mnt/oldzImage", "system.posix_acl_access", 0x0, 0) = -1
EOPNOTSUPP (Operation not supported)

lstat64("/mnt/zImage", {st_mode=S_IFREG|0755, st_size=2029208, ...}) = 0

lgetxattr("/mnt/zImage", "security.selinux", 0x2f270, 255) = -1
EOPNOTSUPP (Operation not supported)

getxattr("/mnt/zImage", "system.posix_acl_access", 0x0, 0) = -1
EOPNOTSUPP (Operation not supported)

getdents64(3, /* 0 entries */, 16384)   = 0

close(3)                                = 0

Any idea?

Regards,
Yegor


More information about the uClibc mailing list