bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#19760: [bug] "tail -f" with inotify fails to follow a file after a r


From: Pádraig Brady
Subject: bug#19760: [bug] "tail -f" with inotify fails to follow a file after a rename()
Date: Tue, 31 Mar 2015 04:15:27 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0

On 03/02/15 23:30, Pádraig Brady wrote:
> On 03/02/15 22:04, Stephane Chazelas wrote:
>> Hello,
>>
>> On Linux, when inotify is used,
>>
>>    tail -f file
>>
>> follows a file only until it's renamed. After it is renamed, the
>> inotify watch is removed, which means tail sits there doing
>> nothing and any further modifications to the file are ignored.
>>
>> To reproduce:
>>
>>     echo 1 > file
>>     tail -f file &
>>     exec 3>> file
>>     echo 2 >&3
>>     sleep 1
>>     mv file file2
>>     sleep 1
>>     echo 3 >&3
>>     sleep 1
>>     : > file2
>>
>> "3" is not displayed. No message about the file being truncated
>> either.
>>
>> Work arounds:
>>
>>    tail ---disable-inotify -f file
>>    tail -f < file # effectively disables inotify
>>
>>    or rename the file with a link() followed by an unlink()
>>    ln file newfile && rm -f file
>>
>> Note that the IN_DELETED_SELF event is not reached in
>> follow-descriptor mode because tail has the file open preventing
>> it from being deleted even after it's unlinked from the last
>> directory.
>>
>> Patch attached (on the current git head).
> 
> Ouch. The patch makes sense on first glance,
> and all existing tests pass with it.
> I'll check some more and add a test.

Sorry for the delay.
I'll apply the attached in your name soon.

thanks,
Pádraig.

Attachment: tail-rename-desc.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]