diff options
author | Pádraig Brady <P@draigBrady.com> | 2010-10-12 01:39:58 +0100 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2010-10-12 11:41:17 +0100 |
commit | 61b77891c2d9af299063850a0c4d1d721340cfff (patch) | |
tree | 53d70fd61a8c64ab6be607a0f9083ff6583f0886 /tests/tail-2/wait | |
parent | 9f4744534f1de87b9630dfbde91b9ebd9592d056 (diff) | |
download | coreutils-61b77891c2d9af299063850a0c4d1d721340cfff.tar.xz |
tail: fix checking of currently unavailable directories
* src/tail.c (tail_forever_inotify): Handle the case where
tail --follow=name with inotify, is not able to add a watch on
a specified directory. This may happen due to inotify resource
limits or if the directory is currently missing or inaccessible.
In all these cases, revert to polling which will try to reopen
the file later. Note inotify returns ENOSPC when it runs out
of resources, and instead we report a particular error message,
lest users think one of their file systems is full.
(main): Document another caveat with using inotify, where we
currently don't recheck directories recreated after the
initial watch is setup.
* tests/tail-2/F-vs-rename: Fix the endless loop triggered by
the above issue.
* tests/tail-2/inotify-hash-abuse: Likewise.
* tests/tail-2/wait: Don't fail in the resource exhaustion case.
* tests/tail-2/F-vs-missing: A new test for this failure mode
which was until now just triggered on older buggy linux kernels
which returned ENOSPC constantly from inotify_add_watch().
* NEWS: Mention the fix.
Diffstat (limited to 'tests/tail-2/wait')
-rwxr-xr-x | tests/tail-2/wait | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tests/tail-2/wait b/tests/tail-2/wait index 332cfcc09..a9636910e 100755 --- a/tests/tail-2/wait +++ b/tests/tail-2/wait @@ -53,7 +53,7 @@ for inotify in ---disable-inotify ''; do timeout 1 tail -s0.1 -F $inotify not_here test $? = 124 || fail=1 - grep -v 'tail: inotify cannot be used, reverting to polling:' tail.err > x + grep -Ev 'inotify (resources exhausted|cannot be used)' tail.err > x mv x tail.err test -s tail.err && fail=1 :>tail.err |