• dean gaudet's avatar
    [PATCH] fcntl F_SETFL and read-only IS_APPEND files · 7d95c8f2
    dean gaudet authored
    There is code in setfl() which attempts to preserve the O_APPEND flag on
    IS_APPEND files...  however IS_APPEND files could also be opened O_RDONLY
    and in that case setfl() should not require O_APPEND...
    
    coreutils 5.93 tail -f attempts to set O_NONBLOCK even on regular files...
    unfortunately if you try this on an append-only log file the result is
    this:
    
    fcntl64(3, F_GETFL)                     = 0x8000 (flags O_RDONLY|O_LARGEFILE)
    fcntl64(3, F_SETFL, O_RDONLY|O_NONBLOCK|O_LARGEFILE) = -1 EPERM (Operation not permitted)
    
    I offer up the patch below as one way of fixing the problem...  i've tested
    it fixes the problem with tail -f but haven't really tested beyond that.
    
    (I also reported the coreutils bug upstream... it shouldn't fail imho...
    <https://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=15473
    
    >)
    Signed-off-by: default avatardean gaudet <dean@arctic.org>
    Cc: Al Viro <viro@ftp.linux.org.uk>
    Acked-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: Andrew M...
    7d95c8f2
fcntl.c 13.7 KB