2009-05-22 01:01:20 +04:00
# 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>
2009-05-22 01:01:37 +04:00
/* destroy all events sitting in this groups notification queue */
extern void fsnotify_flush_notify ( struct fsnotify_group * group ) ;
2010-07-28 18:18:38 +04:00
/* protects reads of inode and vfsmount marks list */
extern struct srcu_struct fsnotify_mark_srcu ;
2009-12-18 05:24:33 +03:00
extern void fsnotify_set_inode_mark_mask_locked ( struct fsnotify_mark * fsn_mark ,
__u32 mask ) ;
2009-12-18 05:24:27 +03:00
/* add a mark to an inode */
extern int fsnotify_add_inode_mark ( struct fsnotify_mark * mark ,
struct fsnotify_group * group , struct inode * inode ,
int allow_dups ) ;
2009-12-18 05:24:27 +03:00
/* add a mark to a vfsmount */
extern int fsnotify_add_vfsmount_mark ( struct fsnotify_mark * mark ,
struct fsnotify_group * group , struct vfsmount * mnt ,
int allow_dups ) ;
2009-12-18 05:24:27 +03:00
2009-05-22 01:01:26 +04:00
/* final kfree of a group */
extern void fsnotify_final_destroy_group ( struct fsnotify_group * group ) ;
2009-05-22 01:01:37 +04:00
2009-12-18 05:24:27 +03:00
/* vfsmount specific destruction of a mark */
extern void fsnotify_destroy_vfsmount_mark ( struct fsnotify_mark * mark ) ;
2009-12-18 05:24:27 +03:00
/* inode specific destruction of a mark */
extern void fsnotify_destroy_inode_mark ( struct fsnotify_mark * mark ) ;
2009-05-22 01:01:26 +04:00
/* run the list of all marks associated with inode and flag them to be freed */
extern void fsnotify_clear_marks_by_inode ( struct inode * inode ) ;
2009-12-18 05:24:27 +03:00
/* run the list of all marks associated with vfsmount and flag them to be freed */
extern void fsnotify_clear_marks_by_mount ( struct vfsmount * mnt ) ;
2009-05-22 01:01:29 +04:00
/*
* 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 ) ;
2009-05-22 01:01:37 +04:00
/* 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 ) ;
2009-05-22 01:01:20 +04:00
# endif /* __FS_NOTIFY_FSNOTIFY_H_ */