From 61b77891c2d9af299063850a0c4d1d721340cfff Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Tue, 12 Oct 2010 01:39:58 +0100 Subject: 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. --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'NEWS') diff --git a/NEWS b/NEWS index 7ee18cdd1..3f810776c 100644 --- a/NEWS +++ b/NEWS @@ -21,6 +21,10 @@ GNU coreutils NEWS -*- outline -*- tac would perform a double-free when given an input line longer than 16KiB. [bug introduced in coreutils-8.3] + tail -F once again notices changes in a currently unavailable directory, + and works around a Linux kernel bug where inotify runs out of resources. + [bugs introduced in coreutils-7.5] + tr now consistently handles case conversion character classes. In some locales, valid conversion specifications caused tr to abort, while in all locales, some invalid specifications were undiagnosed. -- cgit v1.2.3-54-g00ecf