Hi again,
The LCMODEL program works for local disk and for NFS mounted disks, but not for BeeGFS mounted disks.
I have tried the tuneEarlyCloseResponse = false option for the BeeGFS client, but it made no difference.
Any suggestions are very welcome :-)
Furthermore I had a closer look at the strace files.
The first observation is that there is a difference in the return values from lstat64, which returns st_size=4096 for local disk, but other values for BeeGFS folders:
< lstat64("/mnt", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
< lstat64("/mnt/beegfs", {st_mode=S_IFDIR|0777, st_size=1, ...}) = 0
< lstat64("/mnt/beegfs/foo", {st_mode=S_IFDIR|0755, st_size=35, ...}) = 0
< lstat64("/mnt/beegfs/foo/.lcmodel", {st_mode=S_IFDIR|0755, st_size=20, ...}) = 0
< lstat64("/mnt/beegfs/foo/.lcmodel/lib", {st_mode=S_IFDIR|0755, st_size=3, ...}) = 0
< lstat64("/mnt/beegfs/foo/.lcmodel/lib/tcl", {st_mode=S_IFDIR|0755, st_size=17, ...}) = 0
< access("/mnt/beegfs/foo/.lcmodel/lib/tcl/init.tcl", F_OK) = 0
< stat64("/mnt/beegfs/foo/.lcmodel/lib/tcl/init.tcl", {st_mode=S_IFREG|0644, st_size=22451, ...}) = 0
< open("/mnt/beegfs/foo/.lcmodel/lib/tcl/init.tcl", O_RDONLY|O_LARGEFILE) = 3
---
> lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
> lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
> lstat64("/tmp/foo/.lcmodel", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> lstat64("/tmp/foo/.lcmodel/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> lstat64("/tmp/foo/.lcmodel/lib/tcl", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> access("/tmp/foo/.lcmodel/lib/tcl/init.tcl", F_OK) = 0
> stat64("/tmp/foo/.lcmodel/lib/tcl/init.tcl", {st_mode=S_IFREG|0644, st_size=22451, ...}) = 0
> open("/tmp/foo/.lcmodel/lib/tcl/init.tcl", O_RDONLY|O_LARGEFILE) = 3
I do not know if that is a problem. The trace above was from LCMODEL starting and reading setup files.
The following is strace when examining a folder with 100 subfolders:
First on localdisk: (again see that lstat64 and stat64 always returns st_size=4096):
getcwd("/tmp/foo/Data", 4097) = 14
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/tmp/foo/Data/", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
open("/tmp/foo/Data/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 5
fstat64(5, {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
getdents64(5, /* 102 entries */, 4096) = 3248
brk(0x8ee1000) = 0x8ee1000
brk(0x8ee2000) = 0x8ee2000
getdents64(5, /* 0 entries */, 4096) = 0
close(5) = 0
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp/foo/Data", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/tmp/foo/Data/Data001", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp/foo/Data", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/tmp/foo/Data/Data002", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp/foo/Data", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/tmp/foo/Data/Data003", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp/foo/Data", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/tmp/foo/Data/Data004", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp/foo/Data", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/tmp/foo/Data/Data005", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp/foo/Data", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/tmp/foo/Data/Data006", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp/foo/Data", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/tmp/foo/Data/Data007", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp/foo/Data", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/tmp/foo/Data/Data008", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
lstat64("/tmp/foo", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("/tmp/foo/Data", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
[etc]
The following is a trace of LCMODEL on a BeeGFS disk when looking a folder with 100 subfolders.
But the program does not "see" the subfolders.
getcwd("/mnt/beegfs/foo/Data", 4097) = 21
lstat64("/mnt", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/mnt/beegfs", {st_mode=S_IFDIR|0777, st_size=1, ...}) = 0
lstat64("/mnt/beegfs/foo", {st_mode=S_IFDIR|0755, st_size=38, ...}) = 0
stat64("/mnt/beegfs/foo/Data/", {st_mode=S_IFDIR|0775, st_size=100, ...}) = 0
open("/mnt/beegfs/foo/Data/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 5
fstat64(5, {st_mode=S_IFDIR|0775, st_size=100, ...}) = 0
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
old_mmap(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7551000
getdents64(5, /* 102 entries */, 524288) = 3248
munmap(0xf7551000, 528384) = 0
close(5) = 0
chdir("/mnt/beegfs/foo") = 0
write(3, "\2\30\4\0\235\0\240\2\2\0\0\0\377\377\377\0\2\0\4\0\235\0\240\2\2\0\0\0\377\377\377\0"..., 108) = 108
read(3, "\10\3\317\7\343]|\31\301\0\0\0\233\0\240\2\0\0\0\0\206\2\227\0\213\0\22\0\0\0\0\3", 32) = 32
read(3, "\10\4\317\7\343]|\31\301\0\0\0\227\0\240\2\233\0\240\2\206\2\227\0\214\0\22\0\0\0\0\3", 32) = 32
read(3, "\10\4\317\7\343]|\31\301\0\0\0\222\0\240\2\227\0\240\2\206\2\227\0\214\0!\0\0\0\0\3", 32) = 32
read(3, "\10\4\317\7\343]|\31\301\0\0\0X\0\240\2\222\0\240\2\206\2\227\0\225\0&\0\0\0\0\3", 32) = 32
read(3, "\10\4\317\7\343]|\31\301\0\0\0W\0\240\2X\0\240\2\206\2\227\0\225\0&\0\0\0\0\3", 32) = 32
read(3, "\10\4\317\7\343]|\31\301\0\0\0V\0\240\2W\0\240\2\206\2\227\0\231\0*\0\0\0\0\3", 32) = 32
read(3, "\10\4\317\7\343]|\31\301\0\0\0U\0\240\2V\0\240\2\206\2\227\0\231\0*\0\0\0\0\3", 32) = 32
read(3, "\7\3\317\7\343]|\31\301\0\0\0P\0\240\2\0\0\0\0\206\2\227\0\231\0*\0\0\0\0\3", 32) = 32
read(3, "\1\30\335\7\0\0\0\0\301\0\0\0\0\0\0\0O\1\27\0\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32
write(3, "J\30\7\0\27\0\240\0027\0\240\2\5\0\20\0\n\0fid* FID*F\377\5\0"..., 376) = 376
read(3, 0xffb5c0c0, 32) = -1 EAGAIN (Resource temporarily unavailable)
select(4, [3], NULL, NULL, NULL) = 1 (in [3])
read(3, "\10\3\346\7\352]|\31\301\0\0\0P\0\240\2\0\0\0\0\206\2\227\0\231\0*\0\0\0\0\3", 32) = 32
read(3, "\7\4\346\7\352]|\31\301\0\0\0U\0\240\2V\0\240\2\206\2\227\0\231\0*\0\0\0\0\3", 32) = 32
read(3, "\7\4\346\7\352]|\31\301\0\0\0V\0\240\2W\0\240\2\206\2\227\0\231\0*\0\0\0\0\3", 32) = 32
read(3, "\7\4\346\7\352]|\31\301\0\0\0W\0\240\2X\0\240\2\206\2\227\0\225\0&\0\0\0\0\3", 32) = 32
read(3, "\7\4\346\7\352]|\31\301\0\0\0X\0\240\2\222\0\240\2\206\2\227\0\225\0&\0\0\0\0\3", 32) = 32
read(3, "\7\4\346\7\352]|\31\301\0\0\0\222\0\240\2\227\0\240\2\206\2\227\0\214\0!\0\0\0\0\3", 32) = 32
read(3, "\7\4\346\7\352]|\31\301\0\0\0\227\0\240\2\233\0\240\2\206\2\227\0\214\0\22\0\0\0\0\3", 32) = 32
read(3, "\7\3\346\7\352]|\31\301\0\0\0\233\0\240\2\0\0\0\0\206\2\227\0\213\0\22\0\0\0\0\3", 32) = 32
read(3, "\1\2\360\7\0\0\0\0\206\0\240\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32
write(3, "F\30\5\0\30\0\240\2I\0\240\2\0\0\0\0\326\0v\2F*\5\0\30\0\240\2\\\0\240\2"..., 96) = 96
read(3, 0xffb5bcd0, 32) = -1 EAGAIN (Resource temporarily unavailable)
select(4, [3], NULL, NULL, NULL) = 1 (in [3])
read(3, "\1\30\365\7\0\0\0\0\301\0\0\0\0\0\0\0\326\0v\2\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32
write(3, "J\30\5\0\30\0\240\2J\0\240\2\27\0\f\0\1\0/\0F*\5\0\30\0\240\2\\\0\240\2"..., 96) = 96
read(3, 0xffb5bc60, 32) = -1 EAGAIN (Resource temporarily unavailable)
select(4, [3], NULL, NULL, NULL) = 1 (in [3])
read(3, "\1\30\372\7\0\0\0\0\301\0\0\0\0\0\0\0\326\0v\2\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32
write(3, "J\30\6\0\30\0\240\2J\0\240\2\36\0\33\0\3\0mnt\0\5\0F\0\5\0\30\0\240\2"..., 100) = 100
read(3, 0xffb5bbf0, 32) = -1 EAGAIN (Resource temporarily unavailable)
select(4, [3], NULL, NULL, NULL) = 1 (in [3])
read(3, "\1\30\377\7\0\0\0\0\301\0\0\0\0\0\0\0\326\0v\2\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32
write(3, "J\30\6\0\30\0\240\2J\0\240\2%\0*\0\6\0beegfsF\0\5\0\30\0\240\2"..., 100) = 100
read(3, 0xffb5bb80, 32) = -1 EAGAIN (Resource temporarily unavailable)
select(4, [3], NULL, NULL, NULL) = 1 (in [3])
read(3, "\1\30\4\10\0\0\0\0\301\0\0\0\0\0\0\0\326\0v\2\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32
write(3, "J\30\6\0\30\0\240\2J\0\240\2,\0009\0\3\0foo\0fsF\0\5\0\30\0\240\2"..., 180) = 180
read(3, 0xffb5bb10, 32) = -1 EAGAIN (Resource temporarily unavailable)
select(4, [3], NULL, NULL, NULL) = 1 (in [3])
read(3, "\1\30\r\10\0\0\0\0\301\0\0\0\0\0\0\0\326\0v\2\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32
write(3, "J\30\6\0\30\0\240\2K\0\240\0023\0H\0\4\0Data\0sC\0\5\0\30\0\240\2"..., 516) = 516
read(3, 0xffb5b5a0, 32) = -1 EAGAIN (Resource temporarily unavailable)
select(4, [3], NULL, NULL, NULL) = 1 (in [3])
read(3, "\1\2\"\10\0\0\0\0\206\0\240\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32
[snip]
LCMODEL can for some reason not see the 100 subfolders??
File pointers 3 and 4 appears to be:
socket(PF_LOCAL, SOCK_STREAM, 0) = 3
open("/mnt/beegfs/foo/.lcmodel/profiles/1/gui-defaults", O_RDONLY|O_CREAT|O_LARGEFILE, 0644) = 4
Any help is much appreciated!
Yours
Jesper Frandsen