On Tue, Jun 21, 2016 at 11:24:47AM -0400, Tejun Heo wrote: > On Fri, Jun 17, 2016 at 05:51:17PM -0400, Tejun Heo wrote: > > kernfs_notify_workfn() sends out file modified events for the > > scheduled kernfs_nodes. Because the modifications aren't from > > userland, it doesn't have the matching file struct at hand and can't > > use fsnotify_modify(). Instead, it looked up the inode and then used > > d_find_any_alias() to find the dentry and used fsnotify_parent() and > > fsnotify() directly to generate notifications. > > > > The assumption was that the relevant dentries would have been pinned > > if there are listeners, which isn't true as inotify doesn't pin > > dentries at all and watching the parent doesn't pin the child dentries > > even for dnotify. This led to, for example, inotify watchers not > > getting notifications if the system is under memory pressure and the > > matching dentries got reclaimed. It can also be triggered through > > /proc/sys/vm/drop_caches or a remount attempt which involves shrinking > > dcache. > > > > fsnotify_parent() only uses the dentry to access the parent inode, > > which kernfs can do easily. Update kernfs_notify_workfn() so that it > > uses fsnotify() directly for both the parent and target inodes without > > going through d_find_any_alias(). While at it, supply the target file > > name to fsnotify() from kernfs_node->name. > > > > Signed-off-by: Tejun Heo <t...@kernel.org> > > Reported-by: Evgeny Vereshchagin <evv...@ya.ru> > > Fixes: d911d9874801 ("kernfs: make kernfs_notify() trigger inotify events > > too") > > Cc: John McCutchan <j...@johnmccutchan.com> > > Cc: Robert Love <rl...@rlove.org> > > Cc: Eric Paris <epa...@parisplace.org> > > Cc: sta...@vger.kernel.org # v3.16+ > > --- > > Hello, > > > > I'm not sure this is the best way to deal with this but it at least > > works fine. If there's a better, please let me know. If this > > approach is okay, in the future, maybe we want to implement a helper > > on fsnotify side to handle notification generation from back-end side? > > Greg, can you please pick this one up?
Will do, thanks. greg k-h