Blame view

fs/notify/fsnotify.h 2.02 KB
b24413180   Greg Kroah-Hartman   License cleanup: ...
1
  /* SPDX-License-Identifier: GPL-2.0 */
90586523e   Eric Paris   fsnotify: unified...
2
3
4
5
6
7
8
  #ifndef __FS_NOTIFY_FSNOTIFY_H_
  #define __FS_NOTIFY_FSNOTIFY_H_
  
  #include <linux/list.h>
  #include <linux/fsnotify.h>
  #include <linux/srcu.h>
  #include <linux/types.h>
925d1132a   Jan Kara   fsnotify: remove ...
9
  #include "../mount.h"
36f10f55f   Amir Goldstein   fsnotify: let con...
10
11
  static inline struct inode *fsnotify_conn_inode(
  				struct fsnotify_mark_connector *conn)
b812a9f58   Amir Goldstein   fsnotify: pass co...
12
  {
36f10f55f   Amir Goldstein   fsnotify: let con...
13
  	return container_of(conn->obj, struct inode, i_fsnotify_marks);
b812a9f58   Amir Goldstein   fsnotify: pass co...
14
  }
36f10f55f   Amir Goldstein   fsnotify: let con...
15
16
  static inline struct mount *fsnotify_conn_mount(
  				struct fsnotify_mark_connector *conn)
b812a9f58   Amir Goldstein   fsnotify: pass co...
17
  {
36f10f55f   Amir Goldstein   fsnotify: let con...
18
  	return container_of(conn->obj, struct mount, mnt_fsnotify_marks);
b812a9f58   Amir Goldstein   fsnotify: pass co...
19
  }
a2d8bc6cb   Eric Paris   fsnotify: generic...
20
21
  /* destroy all events sitting in this groups notification queue */
  extern void fsnotify_flush_notify(struct fsnotify_group *group);
75c1be487   Eric Paris   fsnotify: srcu to...
22
23
  /* protects reads of inode and vfsmount marks list */
  extern struct srcu_struct fsnotify_mark_srcu;
8edc6e168   Jan Kara   fanotify: fix not...
24
25
26
  /* compare two groups for sorting of marks lists */
  extern int fsnotify_compare_groups(struct fsnotify_group *a,
  				   struct fsnotify_group *b);
9b6e54345   Amir Goldstein   fsnotify: use typ...
27
28
  /* Destroy all marks attached to an object via connector */
  extern void fsnotify_destroy_marks(fsnotify_connp_t *connp);
925d1132a   Jan Kara   fsnotify: remove ...
29
30
31
  /* run the list of all marks associated with inode and destroy them */
  static inline void fsnotify_clear_marks_by_inode(struct inode *inode)
  {
08991e83b   Jan Kara   fsnotify: Free fs...
32
  	fsnotify_destroy_marks(&inode->i_fsnotify_marks);
925d1132a   Jan Kara   fsnotify: remove ...
33
34
35
36
  }
  /* run the list of all marks associated with vfsmount and destroy them */
  static inline void fsnotify_clear_marks_by_mount(struct vfsmount *mnt)
  {
08991e83b   Jan Kara   fsnotify: Free fs...
37
  	fsnotify_destroy_marks(&real_mount(mnt)->mnt_fsnotify_marks);
925d1132a   Jan Kara   fsnotify: remove ...
38
  }
f09b04a03   Jan Kara   fsnotify: Remove ...
39
40
  /* Wait until all marks queued for destruction are destroyed */
  extern void fsnotify_wait_marks_destroyed(void);
35e481761   Jan Kara   fsnotify: avoid s...
41

c28f7e56e   Eric Paris   fsnotify: parent ...
42
43
44
45
46
  /*
   * update the dentry->d_flags of all of inode's children to indicate if inode cares
   * about events that happen to its children.
   */
  extern void __fsnotify_update_child_dentry_flags(struct inode *inode);
a2d8bc6cb   Eric Paris   fsnotify: generic...
47
48
49
50
  
  /* allocate and destroy and event holder to attach events to notification/access queues */
  extern struct fsnotify_event_holder *fsnotify_alloc_event_holder(void);
  extern void fsnotify_destroy_event_holder(struct fsnotify_event_holder *holder);
90586523e   Eric Paris   fsnotify: unified...
51
  #endif	/* __FS_NOTIFY_FSNOTIFY_H_ */