fsnotify: add vfsmount specific fields to the fsnotify_mark_entry union
authorEric Paris <eparis@redhat.com>
Fri, 18 Dec 2009 02:24:23 +0000 (21:24 -0500)
committerEric Paris <eparis@redhat.com>
Wed, 28 Jul 2010 13:58:52 +0000 (09:58 -0400)
vfsmount marks need mostly the same data as inode specific fields, but for
consistency and understandability we put that data in a vfsmount specific
struct inside a union with inode specific data.

Signed-off-by: Eric Paris <eparis@redhat.com>
include/linux/fsnotify_backend.h

index dca7f2cbde9072c581941ce07640394bebe668c6..0c0fd4ee284072cc2910ca38d66a7f67d311bf8f 100644 (file)
@@ -235,6 +235,15 @@ struct fsnotify_inode_mark {
        struct list_head free_i_list;   /* tmp list used when freeing this mark */
 };
 
+/*
+ * Mount point specific fields in an fsnotify_mark_entry
+ */
+struct fsnotify_vfsmount_mark {
+       struct vfsmount *mnt;           /* inode this entry is associated with */
+       struct hlist_node m_list;       /* list of mark_entries by inode->i_fsnotify_mark_entries */
+       struct list_head free_m_list;   /* tmp list used when freeing this mark */
+};
+
 /*
  * a mark is simply an entry attached to an in core inode which allows an
  * fsnotify listener to indicate they are either no longer interested in events
@@ -255,6 +264,7 @@ struct fsnotify_mark_entry {
        spinlock_t lock;                /* protect group and inode */
        union {
                struct fsnotify_inode_mark i;
+               struct fsnotify_vfsmount_mark m;
        };
        struct list_head free_g_list;   /* tmp list used when freeing this mark */
        void (*free_mark)(struct fsnotify_mark_entry *entry); /* called on final put+free */