mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08:00
fsnotify: Add fsnotify_sb_has_watchers() helper
Instead of opencoded checks for number of fsnotify connectors add a helper fsnotify_sb_has_watchers(). Signed-off-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
082fd1ea1f
commit
b7dbaace39
@ -17,6 +17,12 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/bug.h>
|
||||
|
||||
/* Are there any inode/mount/sb objects that are being watched at all? */
|
||||
static inline bool fsnotify_sb_has_watchers(struct super_block *sb)
|
||||
{
|
||||
return atomic_long_read(&sb->s_fsnotify_connectors);
|
||||
}
|
||||
|
||||
/*
|
||||
* Notify this @dir inode about a change in a child directory entry.
|
||||
* The directory entry may have turned positive or negative or its inode may
|
||||
@ -30,7 +36,7 @@ static inline int fsnotify_name(__u32 mask, const void *data, int data_type,
|
||||
struct inode *dir, const struct qstr *name,
|
||||
u32 cookie)
|
||||
{
|
||||
if (atomic_long_read(&dir->i_sb->s_fsnotify_connectors) == 0)
|
||||
if (!fsnotify_sb_has_watchers(dir->i_sb))
|
||||
return 0;
|
||||
|
||||
return fsnotify(mask, data, data_type, dir, name, NULL, cookie);
|
||||
@ -44,7 +50,7 @@ static inline void fsnotify_dirent(struct inode *dir, struct dentry *dentry,
|
||||
|
||||
static inline void fsnotify_inode(struct inode *inode, __u32 mask)
|
||||
{
|
||||
if (atomic_long_read(&inode->i_sb->s_fsnotify_connectors) == 0)
|
||||
if (!fsnotify_sb_has_watchers(inode->i_sb))
|
||||
return;
|
||||
|
||||
if (S_ISDIR(inode->i_mode))
|
||||
@ -59,7 +65,7 @@ static inline int fsnotify_parent(struct dentry *dentry, __u32 mask,
|
||||
{
|
||||
struct inode *inode = d_inode(dentry);
|
||||
|
||||
if (atomic_long_read(&inode->i_sb->s_fsnotify_connectors) == 0)
|
||||
if (!fsnotify_sb_has_watchers(inode->i_sb))
|
||||
return 0;
|
||||
|
||||
if (S_ISDIR(inode->i_mode)) {
|
||||
|
Loading…
Reference in New Issue
Block a user