diff options
author | Amir Goldstein <amir73il@gmail.com> | 2021-08-10 17:12:19 +0200 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2021-08-11 13:50:48 +0200 |
commit | ec44610fe2b86daef70f3f53f47d2a2542d7094f (patch) | |
tree | e12dfdbde1050af24b6c30a9ea36fb9dfa690b63 /fs/notify/fsnotify.h | |
parent | fsnotify: count s_fsnotify_inode_refs for attached connectors (diff) | |
download | linux-ec44610fe2b86daef70f3f53f47d2a2542d7094f.tar.xz linux-ec44610fe2b86daef70f3f53f47d2a2542d7094f.zip |
fsnotify: count all objects with attached connectors
Rename s_fsnotify_inode_refs to s_fsnotify_connectors and count all
objects with attached connectors, not only inodes with attached
connectors.
This will be used to optimize fsnotify() calls on sb without any
type of marks.
Link: https://lore.kernel.org/r/20210810151220.285179-4-amir73il@gmail.com
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Matthew Bobrowski <repnop@google.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/notify/fsnotify.h')
-rw-r--r-- | fs/notify/fsnotify.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/fs/notify/fsnotify.h b/fs/notify/fsnotify.h index ff2063ec6b0f..87d8a50ee803 100644 --- a/fs/notify/fsnotify.h +++ b/fs/notify/fsnotify.h @@ -27,6 +27,21 @@ static inline struct super_block *fsnotify_conn_sb( return container_of(conn->obj, struct super_block, s_fsnotify_marks); } +static inline struct super_block *fsnotify_connector_sb( + struct fsnotify_mark_connector *conn) +{ + switch (conn->type) { + case FSNOTIFY_OBJ_TYPE_INODE: + return fsnotify_conn_inode(conn)->i_sb; + case FSNOTIFY_OBJ_TYPE_VFSMOUNT: + return fsnotify_conn_mount(conn)->mnt.mnt_sb; + case FSNOTIFY_OBJ_TYPE_SB: + return fsnotify_conn_sb(conn); + default: + return NULL; + } +} + /* destroy all events sitting in this groups notification queue */ extern void fsnotify_flush_notify(struct fsnotify_group *group); |