On Thu, May 6, 2010 at 11:02 PM, Henry xu <[email protected]> wrote:
> 在 2010-05-06四的 10:40 -0700,Garrett Cooper写道:
>> On Thu, May 6, 2010 at 2:14 AM, Henry xu <[email protected]> wrote:
>> > Hi,all
>> >
>> > I test inotify03 in  ppc platform and product two fails as
>> > below.
>> > <<<test_start>>>
>> > tag=inotify03 stime=1272626381
>> > cmdline="inotify03 -D /dev/loop0 -T ext3"
>> > contacts=""
>> > analysis=exit
>> > <<<test_output>>>
>> > inotify03    0  TINFO  :  mount /dev/loop0 to mnt_18067 fstype=ext3
>> > inotify03    0  TINFO  :  umount /dev/loop0
>> > inotify03    1  TFAIL  :  get event: wd=1 mask=8000 (expected 2000)
>> > cookie=0 len=0
>> > inotify03    2  TFAIL  :  don't get event: mask=8000
>> > inotify03    3  TPASS  :  inotify_rm_watch (5, 1) return -1 errno=22 :
>> > Invalid argument
>> >
>> >
>> > when I type "./runltp -s inotify" for inotify test, the inotify03 test
>> > is  not been executed.The information is as below.
>> >
>> > I look into the code ,however I could not get why mask is equal to
>> > 8000.Could someone give your comments on this case?
>> >
>> > thanks in advance!
>> >
>> > ================================================================
>> > You can specify it with option -b
>> > COMMAND:    /opt/ltp-full/bin/ltp-pan  -e -S   -a 26692     -n 26692  -p
>> > -f /tmp/ltp-rUQUk26698/alltests
>> > -l /opt/ltp-full/results/LTP_RUN_ON-1970_Jan_02-02h_51m_52s.log
>> > -C /opt/ltp-full/output/LTP_RUN_ON-1970_Jan_02-02h_51m_52s.failed
>> > INFO: Restricted to inotify
>> > LOG File: /opt/ltp-full/results/LTP_RUN_ON-1970_Jan_02-02h_51m_52s.log
>> > FAILED COMMAND
>> > File: /opt/ltp-full/output/LTP_RUN_ON-1970_Jan_02-02h_51m_52s.failed
>> > Running tests.......
>> > <<<test_start>>>
>> > tag=inotify_init1_01 stime=96713
>> > cmdline="inotify_init1_01"
>> > contacts=""
>> > analysis=exit
>> > <<<test_output>>>
>> > inotify_init1_01    1  TPASS  :  inotify_init1(O_CLOEXEC) PASSED
>> > <<<execution_status>>>
>> > initiation_status="ok"
>> > duration=1 termination_type=exited termination_id=0 corefile=no
>> > cutime=0 cstime=0
>> > <<<test_end>>>
>> > <<<test_start>>>
>> > tag=inotify_init1_02 stime=96714
>> > cmdline="inotify_init1_02"
>> > contacts=""
>> > analysis=exit
>> > <<<test_output>>>
>> > inotify_init1_02    1  TPASS  :  inotify_init1(IN_NONBLOCK) PASSED
>> > <<<execution_status>>>
>> > initiation_status="ok"
>> > duration=0 termination_type=exited termination_id=0 corefile=no
>> > cutime=0 cstime=0
>> > <<<test_end>>>
>> > <<<test_start>>>
>> > tag=inotify01 stime=96714
>> > cmdline="inotify01"
>> > contacts=""
>> > analysis=exit
>> > <<<test_output>>>
>> > inotify01    1  TPASS  :  get event: wd=1 mask=4 cookie=0 len=0
>> > inotify01    2  TPASS  :  get event: wd=1 mask=20 cookie=0 len=0
>> > inotify01    3  TPASS  :  get event: wd=1 mask=1 cookie=0 len=0
>> > inotify01    4  TPASS  :  get event: wd=1 mask=10 cookie=0 len=0
>> > inotify01    5  TPASS  :  get event: wd=1 mask=20 cookie=0 len=0
>> > inotify01    6  TPASS  :  get event: wd=1 mask=2 cookie=0 len=0
>> > inotify01    7  TPASS  :  get event: wd=1 mask=8 cookie=0 len=0
>> > <<<execution_status>>>
>> > initiation_status="ok"
>> > duration=0 termination_type=exited termination_id=0 corefile=no
>> > cutime=0 cstime=0
>> > <<<test_end>>>
>> > <<<test_start>>>
>> > tag=inotify02 stime=96714
>> > cmdline="inotify02"
>> > contacts=""
>> > analysis=exit
>> > <<<test_output>>>
>> > inotify02    1  TPASS  :  get event: wd=1 mask=40000004 cookie=0 len=0
>> > name=""
>> > inotify02    2  TPASS  :  get event: wd=1 mask=100 cookie=0 len=16
>> > name="test_file1"
>> > inotify02    3  TPASS  :  get event: wd=1 mask=20 cookie=0 len=16
>> > name="test_file1"
>> > inotify02    4  TPASS  :  get event: wd=1 mask=8 cookie=0 len=16
>> > name="test_file1"
>> > inotify02    5  TPASS  :  get event: wd=1 mask=40 cookie=4553 len=16
>> > name="test_file1"
>> > inotify02    6  TPASS  :  get event: wd=1 mask=80 cookie=4553 len=16
>> > name="test_file2"
>> > inotify02    7  TPASS  :  get event: wd=1 mask=800 cookie=0 len=0
>> > name=""
>> > inotify02    8  TPASS  :  get event: wd=1 mask=200 cookie=0 len=16
>> > name="test_file2"
>> > inotify02    9  TPASS  :  get event: wd=1 mask=800 cookie=0 len=0
>> > name=""
>> > incrementing stop
>> > <<<execution_status>>>
>> > initiation_status="ok"
>> > duration=0 termination_type=exited termination_id=0 corefile=no
>> > cutime=0 cstime=0
>> > <<<test_end>>>
>> > INFO: ltp-pan reported all tests PASS
>> > LTP Version: LTP-20100228
>>
>>     I saw this failure as well on powerpc with 2.6.24 when I was
>> running LTP on a regular basis. I never looked into why it was an
>> issue either.
>> Thanks,
>> -Garrett
>
> I use "strace tool" for the case test,the information is as blow.
>
> r...@sbc8560:/opt/ltp-full> strace ./testcases/bin/inotify03
> -D /dev/loop0 -T ext3
> execve("./testcases/bin/inotify03", ["./testcases/bin/inotify03", "-D",
> "/dev/loop0", "-T", "ext3"], [/* 13 vars */]) = 0
> brk(0)                                  = 0x10026000
> access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or
> directory)
> open("/etc/ld.so.cache", O_RDONLY)      = -1 ENOENT (No such file or
> directory)
> open("/lib/tls/ppc8540/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
> or directory)
> stat64("/lib/tls/ppc8540", 0xbf952008)  = -1 ENOENT (No such file or
> directory)
> open("/lib/tls/libc.so.6", O_RDONLY)    = -1 ENOENT (No such file or
> directory)
> stat64("/lib/tls", 0xbf952008)          = -1 ENOENT (No such file or
> directory)
> open("/lib/ppc8540/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
> directory)
> stat64("/lib/ppc8540", 0xbf952008)      = -1 ENOENT (No such file or
> directory)
> open("/lib/libc.so.6", O_RDONLY)        = 3
> read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\17\345\354\314
> \0\0\0004"..., 512) = 512
> fstat64(3, {st_mode=S_IFREG|0755, st_size=1449652, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
> = 0x48000000
> mmap(0xfe40000, 1516168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,
> 3, 0) = 0xfe40000
> mprotect(0xff9b000, 65536, PROT_NONE)   = 0
> mmap(0xffab000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
> MAP_DENYWRITE, 3, 0x15b000) = 0xffab000
> mmap(0xffb0000, 8840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
> MAP_ANONYMOUS, -1, 0) = 0xffb0000
> close(3)                                = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
> = 0x48001000
> mprotect(0xffab000, 16384, PROT_READ)   = 0
> mprotect(0xffee000, 4096, PROT_READ)    = 0
> brk(0)                                  = 0x10026000
> brk(0x10047000)                         = 0x10047000
> rt_sigaction(SIGHUP, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGINT, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGQUIT, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGILL, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGTRAP, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGABRT, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGBUS, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGFPE, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGUSR1, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGSEGV, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGUSR2, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGPIPE, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGALRM, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGTERM, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGSTKFLT, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0},
> 8) = 0
> rt_sigaction(SIGCHLD, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGTSTP, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGTTIN, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGTTOU, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGURG, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGXCPU, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGXFSZ, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGVTALRM, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0},
> 8) = 0
> rt_sigaction(SIGPROF, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGWINCH, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0},
> 8) = 0
> rt_sigaction(SIGIO, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8) =
> 0
> rt_sigaction(SIGPWR, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGSYS, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0}, 8)
> = 0
> rt_sigaction(SIGRT_16, {0x10004224, [], SA_RESTART}, {SIG_DFL, [], 0},
> 8) = 0
> getpid()                                = 27426
> mkdir("/tmp/inoU3Ze0T", 0700)           = 0
> getgid()                                = 0
> chown("/tmp/inoU3Ze0T", -1, 0)          = 0
> chmod("/tmp/inoU3Ze0T", 0777)           = 0
> chdir("/tmp/inoU3Ze0T")                 = 0
> mkdir("mnt_27426", 0750)                = 0
> fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(5, 1), ...}) = 0
> ioctl(1, TCGETS, {B9600 opost isig icanon echo ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
> = 0x48002000
> write(1, "inotify03    0  INFO  :  mount /"..., 67inotify03    0
> INFO  :  mount /dev/loop0 to mnt_27426 fstype=ext3
> ) = 67
> mount("/dev/loop0", "mnt_27426", "ext3", 0, NULL) = 0
> open("mnt_27426/tfile_27426", O_RDWR|O_CREAT, 0700) = 3
> write(3, "m", 1)                        = 1
> close(3)                                = 0
> inotify_init()                          = 3
> inotify_add_watch(3, "mnt_27426/tfile_27426", IN_ACCESS|IN_MODIFY|
> IN_ATTRIB|IN_CLOSE_WRITE|IN_CLOSE_NOWRITE|IN_OPEN|IN_MOVED_FROM|
> IN_MOVED_TO|IN_CREATE|IN_DELETE|IN_DELETE_SELF|IN_MOVE_SELF) = 1
> write(1, "inotify03    0  INFO  :  umount "..., 43inotify03    0
> INFO  :  umount /dev/loop0
> ) = 43
> oldumount("mnt_27426")                  = 0
> read(3, "\0\0\0\1\0\0\200\0\0\0\0\0\0\0\0\0", 32768) = 16
> write(1, "inotify03    1  FAIL  :  get eve"..., 82inotify03    1
> FAIL  :  get event: wd=1 mask=8000 (expected 2000) cookie=0 len=0
> ) = 82

This is the root cause for the failure. 0x2000 corresponds to:

#define IN_UNMOUNT              0x00002000      /* Backing fs was unmounted */

So, it's a potential kernel bug. Make sure that IN_UNMOUNT is properly
set at all levels between your copy of glibc and the kernel.

> write(1, "inotify03    2  FAIL  :  don't g"..., 53inotify03    2
> FAIL  :  don't get event: mask=8000
> ) = 53
> inotify_rm_watch(3, 1)                  = -1 EINVAL (Invalid argument)

This is a symptom, not the root cause.

> write(1, "inotify03    3  PASS  :  inotify"..., 87inotify03    3
> PASS  :  inotify_rm_watch (3, 1) return -1 errno=22 : Invalid argument
> ) = 87
> close(3)                                = 0
> chdir("/tmp")                           = 0
> lstat64("/tmp/inoU3Ze0T", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
> open("/tmp/inoU3Ze0T", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|
> O_CLOEXEC) = 3
> fstat64(3, {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
> fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
> getdents(3, /* 3 entries */, 4096)      = 56
> lstat64("/tmp/inoU3Ze0T/mnt_27426", {st_mode=S_IFDIR|0750,
> st_size=4096, ...}) = 0
> open("/tmp/inoU3Ze0T/mnt_27426", O_RDONLY|O_NONBLOCK|O_LARGEFILE|
> O_DIRECTORY|O_CLOEXEC) = 4
> fstat64(4, {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
> getdents(4, /* 2 entries */, 4096)      = 32
> getdents(4, /* 0 entries */, 4096)      = 0
> close(4)                                = 0
> lstat64("/tmp/inoU3Ze0T/mnt_27426", {st_mode=S_IFDIR|0750,
> st_size=4096, ...}) = 0
> unlink("/tmp/inoU3Ze0T/mnt_27426")      = -1 EISDIR (Is a directory)
> rmdir("/tmp/inoU3Ze0T/mnt_27426")       = 0
> getdents(3, /* 0 entries */, 4096)      = 0
> close(3)                                = 0
> lstat64("/tmp/inoU3Ze0T", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
> unlink("/tmp/inoU3Ze0T")                = -1 EISDIR (Is a directory)
> rmdir("/tmp/inoU3Ze0T")                 = 0
> exit_group(1)                           = ?
>
> Strangely,the line "read(3, "\0\0\0\1\0\0\200\0\0\0\0\0\0\0\0\0", 32768)
> = 16" points out that the return value is 16 instead of 32768.
> Could someone give your comments on this case?

That's fine:

RETURN VALUES
     If successful, the number of bytes actually read is returned.  Upon read-
     ing end-of-file, zero is returned.  Otherwise, a -1 is returned and the
     global variable errno is set to indicate the error.

Thanks,
-Garrett

------------------------------------------------------------------------------

_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to