Merge tag 'for_v4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
[sfrench/cifs-2.6.git] / include / linux / fs.h
index 771341470bcebd249b023be7cc8f6a22e09b2d31..8252df30b9a16afe53c269b912b47e17edac7b41 100644 (file)
@@ -1412,17 +1412,26 @@ struct super_block {
 
        struct sb_writers       s_writers;
 
+       /*
+        * Keep s_fs_info, s_time_gran, s_fsnotify_mask, and
+        * s_fsnotify_marks together for cache efficiency. They are frequently
+        * accessed and rarely modified.
+        */
+       void                    *s_fs_info;     /* Filesystem private info */
+
+       /* Granularity of c/m/atime in ns (cannot be worse than a second) */
+       u32                     s_time_gran;
+#ifdef CONFIG_FSNOTIFY
+       __u32                   s_fsnotify_mask;
+       struct fsnotify_mark_connector __rcu    *s_fsnotify_marks;
+#endif
+
        char                    s_id[32];       /* Informational name */
        uuid_t                  s_uuid;         /* UUID */
 
-       void                    *s_fs_info;     /* Filesystem private info */
        unsigned int            s_max_links;
        fmode_t                 s_mode;
 
-       /* Granularity of c/m/atime in ns.
-          Cannot be worse than a second */
-       u32                s_time_gran;
-
        /*
         * The next field is for VFS *only*. No filesystems have any business
         * even looking at it. You had been warned.
@@ -1447,6 +1456,9 @@ struct super_block {
        /* Number of inodes with nlink == 0 but still referenced */
        atomic_long_t s_remove_count;
 
+       /* Pending fsnotify inode refs */
+       atomic_long_t s_fsnotify_inode_refs;
+
        /* Being remounted read-only */
        int s_readonly_remount;