fsnotify: Add fsnotify_sb_has_watchers() helper
[linux-2.6-microblaze.git] / include / linux / fsnotify.h
index 8300a52..1a9de11 100644 (file)
 #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)) {