FS#38704 - [spacefm] fails detecting directory changes [inotify, btrfs, kernel]

Attached to Project: Community Packages
Opened by IgnorantGuru (IgnorantGuru) - Tuesday, 28 January 2014, 22:24 GMT
Last edited by Dave Reisner (falconindy) - Tuesday, 28 January 2014, 23:03 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To No-one
Architecture All
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Several SpaceFM users are reporting [1] failed detection of directory changes with a recent update (0.9.3-1). If SpaceFM is run in a terminal, this warning is seen:

** (spacefm:12065): WARNING **: Failed to add monitor on '/home/juha/Desktop/AE/ISO' ('/home/juha/Desktop/AE/ISO'): No space left on device

This was reported with a btrfs filesystem and may or may not be limited to that fs.

This warning is generated by a kernel-level inotify_add_watch() call in SpaceFM's code [2] that is returning errno ENOSPC, which in this context means "The user limit on the total number of inotify watches was reached or the kernel failed to allocate a needed resource." [3]

The inotify interface seems to be working normally so the build looks okay (include sys/inotify.h). There is nothing to indicate this can be addressed in SpaceFM's code or in Bartłomiej's packaging. This appears to be a kernel or module level problem in Arch, perhaps limited to btrfs. There are no reports of this outside of Arch, and the relevant code in SpaceFM is unchanged for at least a year.

If you want to take SpaceFM completely out of the loop, you can probably generate the same error by manually setting a watch using inotify-tools (which is a package containing inotify related CLI tools, but this package is not used by SpaceFM, which calls the kernel directly.)

Reporting this here as a starting point to collect info and if you want to troubleshoot or determine where else to send a report in Arch (eg btrfs module or kernel). Thanks.

[1] https://bbs.archlinux.org/viewtopic.php?pid=1375325#p1375325

[2] https://github.com/IgnorantGuru/spacefm/blob/65592578283004b5b3d269184141c421aafdda2a/src/vfs/vfs-file-monitor.c#L204

[3] http://linux.die.net/man/2/inotify_add_watch

This task depends upon

Closed by  Dave Reisner (falconindy)
Tuesday, 28 January 2014, 23:03 GMT
Reason for closing:  Upstream
Additional comments about closing:  Nothing to do here...
Comment by Dave Reisner (falconindy) - Tuesday, 28 January 2014, 23:02 GMT
The watch limit is dictated by /proc/sys/fs/inotify/max_user_watches. An inotify FD will appear as a symlink to anon_inode:inotify in /proc/$pid/fd/, but this won't tell you how many watches are on that FD.

Very little to do about it here in Arch. I'd suggest you go replicate the problem with a loop that adds watches until you hit the limit.

Loading...