fsnotify: allow groups to set freeing_mark to null
Most fsnotify listeners (all but inotify) do not care about marks being
freed. Allow groups to set freeing_mark to null and do not call any
function if it is set that way.
Signed-off-by: Eric Paris <eparis@redhat.com>
diff --git a/fs/notify/dnotify/dnotify.c b/fs/notify/dnotify/dnotify.c
index 98a7516..828a889 100644
--- a/fs/notify/dnotify/dnotify.c
+++ b/fs/notify/dnotify/dnotify.c
@@ -161,12 +161,6 @@
return send;
}
-static void dnotify_freeing_mark(struct fsnotify_mark_entry *entry,
- struct fsnotify_group *group)
-{
- /* dnotify doesn't care than an inode is on the way out */
-}
-
static void dnotify_free_mark(struct fsnotify_mark_entry *entry)
{
struct dnotify_mark_entry *dnentry = container_of(entry,
@@ -182,7 +176,7 @@
.handle_event = dnotify_handle_event,
.should_send_event = dnotify_should_send_event,
.free_group_priv = NULL,
- .freeing_mark = dnotify_freeing_mark,
+ .freeing_mark = NULL,
.free_event_priv = NULL,
};
diff --git a/fs/notify/inode_mark.c b/fs/notify/inode_mark.c
index 0a499d2..c8a07c6 100644
--- a/fs/notify/inode_mark.c
+++ b/fs/notify/inode_mark.c
@@ -190,7 +190,8 @@
* callback to the group function to let it know that this entry
* is being freed.
*/
- group->ops->freeing_mark(entry, group);
+ if (group->ops->freeing_mark)
+ group->ops->freeing_mark(entry, group);
/*
* __fsnotify_update_child_dentry_flags(inode);