Blame view

fs/notify/fsnotify.h 2.32 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
  }
1e6cb7239   Amir Goldstein   fsnotify: add sup...
20
21
22
23
24
  static inline struct super_block *fsnotify_conn_sb(
  				struct fsnotify_mark_connector *conn)
  {
  	return container_of(conn->obj, struct super_block, s_fsnotify_marks);
  }
a2d8bc6cb   Eric Paris   fsnotify: generic...
25
26
  /* destroy all events sitting in this groups notification queue */
  extern void fsnotify_flush_notify(struct fsnotify_group *group);
75c1be487   Eric Paris   fsnotify: srcu to...
27
28
  /* protects reads of inode and vfsmount marks list */
  extern struct srcu_struct fsnotify_mark_srcu;
8edc6e168   Jan Kara   fanotify: fix not...
29
30
31
  /* 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...
32
33
  /* Destroy all marks attached to an object via connector */
  extern void fsnotify_destroy_marks(fsnotify_connp_t *connp);
925d1132a   Jan Kara   fsnotify: remove ...
34
35
36
  /* 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...
37
  	fsnotify_destroy_marks(&inode->i_fsnotify_marks);
925d1132a   Jan Kara   fsnotify: remove ...
38
39
40
41
  }
  /* 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...
42
  	fsnotify_destroy_marks(&real_mount(mnt)->mnt_fsnotify_marks);
925d1132a   Jan Kara   fsnotify: remove ...
43
  }
1e6cb7239   Amir Goldstein   fsnotify: add sup...
44
45
46
47
48
  /* run the list of all marks associated with sb and destroy them */
  static inline void fsnotify_clear_marks_by_sb(struct super_block *sb)
  {
  	fsnotify_destroy_marks(&sb->s_fsnotify_marks);
  }
35e481761   Jan Kara   fsnotify: avoid s...
49

c28f7e56e   Eric Paris   fsnotify: parent ...
50
51
52
53
54
  /*
   * 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...
55
56
57
58
  
  /* 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);
4a0b20be6   Ben Dooks   fsnotify: move de...
59
  extern struct kmem_cache *fsnotify_mark_connector_cachep;
90586523e   Eric Paris   fsnotify: unified...
60
  #endif	/* __FS_NOTIFY_FSNOTIFY_H_ */