Hi Bryan,
I managed to reproduce the issue using the attached C program.
- compile: gcc -o inotify_stress inotify_stress.c
- run: ./inotify_stress -f /var/log -n 120
If 120 does not cause crash, please use a larger number.
It seems a stack overflow issue. In all the crash dumps we saw those
recursive inotify_fop_readdir/vnext_readdir calls used almost 20K stack
space and reached its limit.
Thanks,
-Youzhong
On Tue, Dec 16, 2014 at 6:20 PM, Bryan Cantrill <[email protected]>
wrote:
>
>
> Youzhong,
>
> Interesting. No, we haven't seen it, and it's not immediately obvious
> what's going on; the dump is going to be essential here. Can you perhaps
> upload the dump to a private Manta account and then sign a URL and send it
> to me privately to use? (Or otherwise make it available to me privately?)
> Alternatively, is this reproducible? Could you reproduce it on a machine
> for which you could share the dump? Or perhaps tell me how you reproduced
> it? To answer your question: yes, further analysis is needed. ;)
>
> - Bryan
>
>
>
> On Tue, Dec 16, 2014 at 3:10 PM, Youzhong Yang via smartos-discuss <
> [email protected]> wrote:
>
>> Hello again,
>>
>> I tried to test samba with inotify under relatively heavy load, it
>> panicked the machine.
>>
>> Does the stack give a hint about what's going wrong? I have the crash
>> dump but I cannot upload it since it may contain some production data. If
>> further analysis is needed, please advise.
>>
>> Thanks,
>>
>> -Youzhong
>>
>> > $C
>> ffffff0091179030 cpu_idle_exit+0xc()
>> ffffff0091179090 do_interrupt+0x41(ffffff00911790a0, 0)
>> ffffff00911790a0 _interrupt+0xba()
>> ffffff00911791d0 fakesoftint_return()
>> ffffff0091179200 disp_lock_exit_nopreempt+0x42(ffffff136441b2c8)
>> ffffff0091179220 preempt+0xe7()
>> ffffff0091179250 kpreempt+0x98(1)
>> ffffff0091179280 sys_rtt_common+0x1ba(ffffff0091179290)
>> ffffff0091179290 _sys_rtt_ints_disabled+8()
>> ffffff00911793f0 mutex_enter+9()
>> ffffff00911794a0 dbuf_prefetch+0x65(ffffff21994217d8, 253e, 2)
>> ffffff00911794f0 dmu_zfetch_fetch+0x55(ffffff21994217d8, 24f1, d4)
>> ffffff0091179530 dmu_zfetch_dofetch+0xbb(ffffff2199421a10,
>> ffffff1aac35c440)
>> ffffff00911795a0 dmu_zfetch_find+0x3d6(ffffff2199421a10,
>> ffffff00911795c0, 1)
>> ffffff0091179670 dmu_zfetch+0xe0(ffffff2199421a10, 9b4c000, 4000, 1)
>> ffffff00911796e0 dbuf_read+0x301(ffffff3d9e911238, 0, 2)
>> ffffff0091179790 dnode_hold_impl+0xe4(ffffff2d0cfca700, 4da74, 1,
>> fffffffff7e8bb8d, ffffff00911797e8)
>> ffffff00911797c0 dnode_hold+0x28(ffffff2d0cfca700, 4da74,
>> fffffffff7e8bb8d, ffffff00911797e8)
>> ffffff0091179840 dmu_buf_hold+0x5c(ffffff2d0cfca700, 4da74, 0, 0,
>> ffffff0091179888, 1)
>> ffffff00911798f0 zap_lockdir+0x6d(ffffff2d0cfca700, 4da74, 0, 1, 1, 0,
>> ffffff0091179b78)
>> ffffff00911799a0 zap_cursor_retrieve+0x16c(ffffff0091179b70,
>> ffffff0091179a50)
>> ffffff0091179c20 zfs_readdir+0x33d(ffffff2d2fe46340, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179c60 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179cc0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179d00 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179d60 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179da0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179e00 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179e40 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179ea0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179ee0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179f40 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179f80 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff0091179fe0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a020 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a080 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a0c0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a120 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a160 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a1c0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a200 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a260 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a2a0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a300 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a340 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a3a0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a3e0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a440 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a480 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a4e0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a520 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a580 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a5c0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a620 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a660 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a6c0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a700 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a760 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a7a0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a800 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a840 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a8a0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a8e0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a940 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a980 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117a9e0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117aa20 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117aa80 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117aac0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ab20 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ab60 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117abc0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ac00 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ac60 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117aca0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ad00 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ad40 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ada0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ade0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ae40 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ae80 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117aee0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117af20 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117af80 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117afc0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b020 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b060 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b0c0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b100 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b160 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b1a0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b200 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b240 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b2a0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b2e0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b340 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b380 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b3e0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b420 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b480 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b4c0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b520 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b560 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b5c0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b600 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b660 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b6a0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b700 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b740 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b7a0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b7e0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b840 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b880 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b8e0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b920 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b980 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117b9c0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ba20 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ba60 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bac0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bb00 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bb60 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bba0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bc00 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bc40 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bca0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bce0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bd40 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bd80 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bde0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117be20 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117be80 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bec0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bf20 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bf60 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117bfc0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c000 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c060 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c0a0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c100 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c140 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c1a0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c1e0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c240 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c280 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c2e0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c320 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c380 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c3c0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c420 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c460 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c4c0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c500 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c560 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c5a0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c600 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c640 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c6a0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c6e0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c740 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c780 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c7e0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c820 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c880 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c8c0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c920 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c960 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117c9c0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ca00 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ca60 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117caa0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cb00 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cb40 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cba0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cbe0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cc40 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cc80 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cce0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cd20 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cd80 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cdc0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ce20 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ce60 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cec0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cf00 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cf60 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117cfa0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d000 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d040 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d0a0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d0e0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d140 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d180 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d1e0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d220 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d280 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d2c0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d320 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d360 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d3c0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d400 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d460 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d4a0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d500 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d540 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d5a0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d5e0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d640 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d680 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d6e0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d720 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d780 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d7c0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d820 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d860 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d8c0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d900 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d960 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117d9a0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117da00 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117da40 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117daa0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117dae0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117db40 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117db80 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117dbe0 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117dc20 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117dc80 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117dcc0 vnext_readdir+0x84(ffffff009117dd40, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117dd20 inotify_fop_readdir+0x30(ffffff009117dd40,
>> ffffff009117de60, ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117ddb0 vhead_readdir+0xe0(ffffff2d2fe46340, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117de40 fop_readdir+0x6b(ffffff2d2fe46340, ffffff009117de60,
>> ffffff2b6f35ab30, ffffff009117deac, 0, 0)
>> ffffff009117df00 getdents64+0xf5(693, fffffd7ffeb36000, 2000)
>> ffffff009117df10 sys_syscall+0x17a()
>>
>>
>>
>> *smartos-discuss* | Archives
>> <https://www.listbox.com/member/archive/184463/=now>
>> <https://www.listbox.com/member/archive/rss/184463/21493597-819305a5> |
>> Modify
>> <https://www.listbox.com/member/?&>
>> Your Subscription <http://www.listbox.com>
>>
>
-------------------------------------------
smartos-discuss
Archives: https://www.listbox.com/member/archive/184463/=now
RSS Feed: https://www.listbox.com/member/archive/rss/184463/25769125-55cfbc00
Modify Your Subscription:
https://www.listbox.com/member/?member_id=25769125&id_secret=25769125-7688e9fb
Powered by Listbox: http://www.listbox.com
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/inotify.h>
#ifdef __sun__
#include <sys/filio.h>
#endif
#include <unistd.h>
#include <stropts.h>
#include <poll.h>
#include <fcntl.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <signal.h>
#include <string.h>
#include <time.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/resource.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <dirent.h>
#include <strings.h>
static void lookupdir(char *path)
{
DIR *dirp;
struct dirent *dp;
if ((dirp = opendir(path)) == NULL) {
perror("opendir");
return;
}
do {
dp = readdir(dirp);
} while (dp != NULL);
closedir(dirp);
return;
}
void proc_to_run(char *pathname)
{
int fd;
int wd;
int ret;
struct pollfd fds[1];
char buffer[4096];
fd = inotify_init();
/*checking for error*/
if ( fd < 0 ) {
perror( "inotify_init" );
return;
}
wd = inotify_add_watch( fd, pathname, IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO | IN_ATTRIB | IN_MODIFY | IN_ONLYDIR);
if(wd == -1) {
perror("inotify_add_watch");
return;
}
fds[0].fd = fd;
fds[0].events = POLLIN;
while(1)
{
/* check if there's data available for reading */
ret = poll(fds, 1, 1000);
if(ret <= 0) continue;
/* read data */
while(read(fd, buffer, 4096) > 0);
}
inotify_rm_watch(fd, wd);
return;
}
void wait_children() {
int pid;
while (pid = waitpid(-1, NULL, 0)) {
if (errno == ECHILD) break;
}
}
void print_usage(char *argv[])
{
printf("Usage:\n\n");
printf("\t%s -f folder -n processes\n", argv[0]);
printf("\n");
}
int main(int argc, char *argv[])
{
int c;
char *foldername = NULL;
int n_children = 100;
pid_t pid;
int n_processes;
while ((c = getopt(argc, argv, ":f:n:")) != -1) {
switch(c) {
case 'f':
foldername = optarg;
break;
case 'n':
n_children = atoi(optarg);
break;
case ':':
printf("-%c without arg\n", optopt);
exit(1);
break;
}
}
if(foldername == NULL) {
printf("Must specify a folder.\n\n");
print_usage(argv);
exit(1);
}
printf("(f) folder = %s\n", foldername);
printf("(n) number of processes = %d\n", n_children);
n_processes = n_children;
while(n_children--) {
pid = fork();
if(pid == -1) {
perror("fork: ");
continue;
}
else if(pid == 0) {
/* child */
proc_to_run(foldername);
exit(0);
}
else {
/* parent */
}
}
sleep(5);
lookupdir(foldername);
wait_children();
return 0;
}