• Tejun Heo's avatar
    kernfs: make kernfs_notify() trigger inotify events too · d911d987
    Tejun Heo authored
    kernfs_notify() is used to indicate either new data is available or
    the content of a file has changed.  It currently only triggers poll
    which may not be the most convenient to monitor especially when there
    are a lot to monitor.  Let's hook it up to fsnotify too so that the
    events can be monitored via inotify too.
    
    fsnotify_modify() requires file * but kernfs_notify() doesn't have any
    specific file associated; however, we can walk all super_blocks
    associated with a kernfs_root and as kernfs always associate one ino
    with inode and one dentry with an inode, it's trivial to look up the
    dentry associated with a given kernfs_node.  As any active monitor
    would pin dentry, just looking up existing dentry is enough.  This
    patch looks up the dentry associated with the specified kernfs_node
    and generates events equivalent to fsnotify_modify().
    
    Note that as fsnotify doesn't provide fsnotify_modify() equivalent
    which can be called with dentry, kernfs_notify() directly calls
    fsnotify_parent() and fsnotify().  It might be better to add a wrapper
    in fsnotify.h instead.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: John McCutchan <john@johnmccutchan.com>
    Cc: Robert Love <rlove@rlove.org>
    Cc: Eric Paris <eparis@parisplace.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d911d987
file.c 22 KB