I have an app which puts 15000 files in 256 directories on a server (which is running all the daemons, storage on a separate disk).
One client which is trying to remove them (in code using Node.js fs module).
Occasionally when I run the remove, one of the files just won't delete (I get EBUSY back). At the same time, syslog shows the following warning:
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431585] WARNING: CPU: 2 PID: 14175 at /build/buildd/linux-3.11.0/fs/inode.c:281 drop_nlink+0x3e/0x50()
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431589] Modules linked in: fhgfs(OF) fhgfs_client_opentk(OF) pci_stub vboxpci(OF) vboxnetadp(OF) vboxnetflt(OF) vboxdrv(OF) dm_crypt ib_iser rdma_cm ib_addr iw_cm ib_cm ib_sa ib_mad ib_core iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi parport_pc ppdev bnep rfcomm bluetooth x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm rt5390sta(POF) crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw uvcvideo gf128mul glue_helper videobuf2_vmalloc videobuf2_memops videobuf2_core ablk_helper cryptd arc4 hp_wmi joydev sparse_keymap videodev rt2800pci rt2800lib rt2x00pci rt2x00mmio rt2x00lib mac80211 snd_hda_codec_hdmi snd_hda_codec_idt snd_hda_intel snd_hda_codec cfg80211 eeprom_93cx6 rtsx_pci_ms hp_accel memstick lpc_ich snd_hwdep snd_pcm snd_page_alloc snd_seq_midi snd_seq_midi_event snd_rawmidi crc_ccitt snd_seq snd_seq_device snd_timer snd nfsd psmouse microcode serio_raw soundcore mac_hid lis3lv02d mei_me input_polldev mei auth_rpcgss nfs_ac
Feb 24 21:19:55 david-hp-laptop kernel: l nfs lockd sunrpc binfmt_misc fscache lp parport rtsx_pci_sdmmc i915 i2c_algo_bit drm_kms_helper drm ahci libahci r8169 rtsx_pci mii video wmi [last unloaded: fhgfs_client_opentk]
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431732] CPU: 2 PID: 14175 Comm: node Tainted: PF W O 3.11.0-15-generic #25-Ubuntu
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431737] Hardware name: Hewlett-Packard HP Pavilion g6 Notebook PC/183F, BIOS F.16 10/09/2012
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431741] 0000000000000009 ffff880148dffda8 ffffffff816e7375 0000000000000000
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431747] ffff880148dffde0 ffffffff81061dcd ffff8801767f4080 ffff8801006bd600
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431751] 0000000000000000 ffff8801a117e800 ffff880113673ed8 ffff880148dffdf0
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431756] Call Trace:
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431767] [<ffffffff816e7375>] dump_stack+0x45/0x56
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431774] [<ffffffff81061dcd>] warn_slowpath_common+0x7d/0xa0
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431780] [<ffffffff81061eaa>] warn_slowpath_null+0x1a/0x20
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431785] [<ffffffff811c0aae>] drop_nlink+0x3e/0x50
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431813] [<ffffffffa09a2ea0>] FhgfsOps_unlink+0xf0/0x1f0 [fhgfs]
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431823] [<ffffffff811b49e0>] vfs_unlink+0x90/0x100
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431831] [<ffffffff811b6aa9>] do_unlinkat+0x229/0x260
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431839] [<ffffffff811b65b9>] ? putname+0x29/0x40
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431847] [<ffffffff811a649b>] ? do_sys_open+0x1bb/0x270
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431855] [<ffffffff811b7666>] SyS_unlink+0x16/0x20
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431864] [<ffffffff816f725d>] system_call_fastpath+0x1a/0x1f
Feb 24 21:19:55 david-hp-laptop kernel: [22994.431868] ---[ end trace 8cb289933d7118e7 ]---
Feb 24 21:19:55 david-hp-laptop kernel: [22994.447936] ------------[ cut here ]------------
I can remove the file from another process (using bash or Node.js) or if I kill the app and run it again then the new instance successfully removes the file. I'd have put it down to Node but when I saw the kernel warning above I wondered whether it was indicative of something in the FhGFS client module?