• Eric Paris's avatar
    vfs: introduce FMODE_NONOTIFY · ecf081d1
    Eric Paris authored
    This is a new f_mode which can only be set by the kernel.  It indicates
    that the fd was opened by fanotify and should not cause future fanotify
    events.  This is needed to prevent fanotify livelock.  An example of
    obvious livelock is from fanotify close events.
    
    Process A closes file1
    This creates a close event for file1.
    fanotify opens file1 for Listener X
    Listener X deals with the event and closes its fd for file1.
    This creates a close event for file1.
    fanotify opens file1 for Listener X
    Listener X deals with the event and closes its fd for file1.
    This creates a close event for file1.
    fanotify opens file1 for Listener X
    Listener X deals with the event and closes its fd for file1.
    notice a pattern?
    
    The fix is to add the FMODE_NONOTIFY bit to the open filp done by the kernel
    for fanotify.  Thus when that file is used it will not generate future
    events.
    
    This patch simply defines the bit.
    Signed-off-by: default avatarEric Paris <eparis@redhat.com>
    ecf081d1
fcntl.h 4.33 KB