]> git.ipfire.org Git - thirdparty/coreutils.git/commit
tail: return inotify resources where possible
authorPádraig Brady <P@draigBrady.com>
Thu, 5 Feb 2015 13:10:49 +0000 (13:10 +0000)
committerPádraig Brady <P@draigBrady.com>
Fri, 6 Feb 2015 10:41:06 +0000 (10:41 +0000)
commit235d52c3eaf2c8f6dd6eadb45ac458e71d3afc75
treeda786a26d718ac0342c0e133a01a6b49e21def6e
parent81609dc1ea66b97e6aaf373538deddc283cbd6c6
tail: return inotify resources where possible

Each user has a maximum number of inotify watches,
so handle the cases where we exhaust these resources.

* src/tail.c (tail_forever_inotify): Ensure we inotify_rm_watch()
the watch for an inode, when replacing with a new watch for a name.
Return all used inotify resources when reverting to polling.
Revert to polling upon first indication of inotify resource exhaustion.
Revert to polling on any inotify resource exhaustion.
Diagnose resource exhaustion correctly in all cases.
Avoid redundant reinsertion in the hash for unchanged watches
(where only attributes of the file are changed).
* tests/tail-2/retry.sh: Avoid false failure when reverting to polling.
* tests/tail-2/inotify-rotate.sh: Likewise.
* tests/tail-2/symlink.sh: Likewise.
* tests/tail-2/inotify-rotate-resources.sh: New test to check
that we're calling inotify_rm_watch() for replaced files.
* tests/local.mk: Reference the new test.
* NEWS: Mention the bug fix.
* THANKS.in: Thanks for reporting and problem identification.
NEWS
THANKS.in
src/tail.c
tests/local.mk
tests/tail-2/inotify-rotate-resources.sh [new file with mode: 0755]
tests/tail-2/inotify-rotate.sh
tests/tail-2/retry.sh
tests/tail-2/symlink.sh