mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-24 05:01:03 +02:00
fsnotify: let connector point to an abstract object
Make the code to attach/detach a connector to object more generic by letting the fsnotify connector point to an abstract fsnotify_connp_t. Code that needs to dereference an inode or mount object now uses the helpers fsnotify_conn_{inode,mount}. Signed-off-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
@@ -255,6 +255,13 @@ FSNOTIFY_ITER_FUNCS(vfsmount, VFSMOUNT)
|
||||
#define fsnotify_foreach_obj_type(type) \
|
||||
for (type = 0; type < FSNOTIFY_OBJ_TYPE_COUNT; type++)
|
||||
|
||||
/*
|
||||
* fsnotify_connp_t is what we embed in objects which connector can be attached
|
||||
* to. fsnotify_connp_t * is how we refer from connector back to object.
|
||||
*/
|
||||
struct fsnotify_mark_connector;
|
||||
typedef struct fsnotify_mark_connector __rcu *fsnotify_connp_t;
|
||||
|
||||
/*
|
||||
* Inode / vfsmount point to this structure which tracks all marks attached to
|
||||
* the inode / vfsmount. The reference to inode / vfsmount is held by this
|
||||
@@ -264,17 +271,15 @@ FSNOTIFY_ITER_FUNCS(vfsmount, VFSMOUNT)
|
||||
struct fsnotify_mark_connector {
|
||||
spinlock_t lock;
|
||||
unsigned int type; /* Type of object [lock] */
|
||||
union { /* Object pointer [lock] */
|
||||
struct inode *inode;
|
||||
struct vfsmount *mnt;
|
||||
union {
|
||||
/* Object pointer [lock] */
|
||||
fsnotify_connp_t *obj;
|
||||
/* Used listing heads to free after srcu period expires */
|
||||
struct fsnotify_mark_connector *destroy_next;
|
||||
};
|
||||
struct hlist_head list;
|
||||
};
|
||||
|
||||
typedef struct fsnotify_mark_connector __rcu *fsnotify_connp_t;
|
||||
|
||||
/*
|
||||
* A mark is simply an object attached to an in core inode which allows an
|
||||
* fsnotify listener to indicate they are either no longer interested in events
|
||||
|
Reference in New Issue
Block a user