1

fsnotify: create a wrapper fsnotify_find_inode_mark()

In preparation to passing an object pointer to fsnotify_find_mark(), add
a wrapper fsnotify_find_inode_mark() and use it where possible.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20240317184154.1200192-4-amir73il@gmail.com>
This commit is contained in:
Amir Goldstein 2024-03-17 20:41:47 +02:00 committed by Jan Kara
parent f115815d75
commit 230d97d39e
6 changed files with 14 additions and 7 deletions

View File

@ -159,8 +159,8 @@ nfsd_file_mark_find_or_create(struct nfsd_file *nf, struct inode *inode)
do { do {
fsnotify_group_lock(nfsd_file_fsnotify_group); fsnotify_group_lock(nfsd_file_fsnotify_group);
mark = fsnotify_find_mark(&inode->i_fsnotify_marks, mark = fsnotify_find_inode_mark(inode,
nfsd_file_fsnotify_group); nfsd_file_fsnotify_group);
if (mark) { if (mark) {
nfm = nfsd_file_mark_get(container_of(mark, nfm = nfsd_file_mark_get(container_of(mark,
struct nfsd_file_mark, struct nfsd_file_mark,

View File

@ -162,7 +162,7 @@ void dnotify_flush(struct file *filp, fl_owner_t id)
if (!S_ISDIR(inode->i_mode)) if (!S_ISDIR(inode->i_mode))
return; return;
fsn_mark = fsnotify_find_mark(&inode->i_fsnotify_marks, dnotify_group); fsn_mark = fsnotify_find_inode_mark(inode, dnotify_group);
if (!fsn_mark) if (!fsn_mark)
return; return;
dn_mark = container_of(fsn_mark, struct dnotify_mark, fsn_mark); dn_mark = container_of(fsn_mark, struct dnotify_mark, fsn_mark);
@ -326,7 +326,7 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned int arg)
fsnotify_group_lock(dnotify_group); fsnotify_group_lock(dnotify_group);
/* add the new_fsn_mark or find an old one. */ /* add the new_fsn_mark or find an old one. */
fsn_mark = fsnotify_find_mark(&inode->i_fsnotify_marks, dnotify_group); fsn_mark = fsnotify_find_inode_mark(inode, dnotify_group);
if (fsn_mark) { if (fsn_mark) {
dn_mark = container_of(fsn_mark, struct dnotify_mark, fsn_mark); dn_mark = container_of(fsn_mark, struct dnotify_mark, fsn_mark);
spin_lock(&fsn_mark->lock); spin_lock(&fsn_mark->lock);

View File

@ -544,7 +544,7 @@ static int inotify_update_existing_watch(struct fsnotify_group *group,
int create = (arg & IN_MASK_CREATE); int create = (arg & IN_MASK_CREATE);
int ret; int ret;
fsn_mark = fsnotify_find_mark(&inode->i_fsnotify_marks, group); fsn_mark = fsnotify_find_inode_mark(inode, group);
if (!fsn_mark) if (!fsn_mark)
return -ENOENT; return -ENOENT;
else if (create) { else if (create) {

View File

@ -789,6 +789,13 @@ static inline int fsnotify_add_inode_mark_locked(struct fsnotify_mark *mark,
FSNOTIFY_OBJ_TYPE_INODE, add_flags); FSNOTIFY_OBJ_TYPE_INODE, add_flags);
} }
static inline struct fsnotify_mark *fsnotify_find_inode_mark(
struct inode *inode,
struct fsnotify_group *group)
{
return fsnotify_find_mark(&inode->i_fsnotify_marks, group);
}
/* given a group and a mark, flag mark to be freed when all references are dropped */ /* given a group and a mark, flag mark to be freed when all references are dropped */
extern void fsnotify_destroy_mark(struct fsnotify_mark *mark, extern void fsnotify_destroy_mark(struct fsnotify_mark *mark,
struct fsnotify_group *group); struct fsnotify_group *group);

View File

@ -463,7 +463,7 @@ static int tag_chunk(struct inode *inode, struct audit_tree *tree)
int n; int n;
fsnotify_group_lock(audit_tree_group); fsnotify_group_lock(audit_tree_group);
mark = fsnotify_find_mark(&inode->i_fsnotify_marks, audit_tree_group); mark = fsnotify_find_inode_mark(inode, audit_tree_group);
if (!mark) if (!mark)
return create_chunk(inode, tree); return create_chunk(inode, tree);

View File

@ -90,7 +90,7 @@ static inline struct audit_parent *audit_find_parent(struct inode *inode)
struct audit_parent *parent = NULL; struct audit_parent *parent = NULL;
struct fsnotify_mark *entry; struct fsnotify_mark *entry;
entry = fsnotify_find_mark(&inode->i_fsnotify_marks, audit_watch_group); entry = fsnotify_find_inode_mark(inode, audit_watch_group);
if (entry) if (entry)
parent = container_of(entry, struct audit_parent, mark); parent = container_of(entry, struct audit_parent, mark);