When a watch is added on a super block's root inode with the FS_EVENT_ON_SB flag, the watched inode is intended to report events on all inodes on the same super block. Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> --- fs/notify/fsnotify.c | 2 +- include/linux/fsnotify_backend.h | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c index 3ba0e4a..12d4479 100644 --- a/fs/notify/fsnotify.c +++ b/fs/notify/fsnotify.c @@ -297,7 +297,7 @@ static __init int fsnotify_init(void) { int ret; - BUG_ON(hweight32(ALL_FSNOTIFY_EVENTS) != 23); + BUG_ON(hweight32(ALL_FSNOTIFY_EVENTS) != 24); ret = init_srcu_struct(&fsnotify_mark_srcu); if (ret) diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h index b55c64d..b7992da 100644 --- a/include/linux/fsnotify_backend.h +++ b/include/linux/fsnotify_backend.h @@ -54,6 +54,13 @@ * dnotify and inotify. */ #define FS_EVENT_ON_CHILD 0x08000000 +/* This root inode cares about things that happen to inodes on same super block. + * Can only be set for fanotify. + * Overloads IN_ONLYDIR inotify open only flag */ +#define FS_EVENT_ON_SB 0x01000000 + +#define FS_EVENT_ON_DESCENDANT (FS_EVENT_ON_CHILD | FS_EVENT_ON_SB) + /* This is a list of all events that may get sent to a parernt based on fs event * happening to inodes inside that directory */ #define FS_EVENTS_POSS_ON_CHILD (FS_ACCESS | FS_MODIFY | FS_ATTRIB |\ @@ -61,6 +68,11 @@ FS_MOVED_FROM | FS_MOVED_TO | FS_CREATE |\ FS_DELETE | FS_OPEN_PERM | FS_ACCESS_PERM) +/* This is a list of all events that may get sent to the root inode based on fs + * event happening to inodes on the same super block */ +#define FS_EVENTS_POSS_ON_SB (FS_EVENTS_POSS_ON_CHILD |\ + FS_DELETE_SELF | FS_MOVE_SELF) + #define FS_MOVE (FS_MOVED_FROM | FS_MOVED_TO) #define ALL_FSNOTIFY_PERM_EVENTS (FS_OPEN_PERM | FS_ACCESS_PERM) @@ -70,9 +82,10 @@ FS_MOVED_FROM | FS_MOVED_TO | FS_CREATE | \ FS_DELETE | FS_DELETE_SELF | FS_MOVE_SELF | \ FS_UNMOUNT | FS_Q_OVERFLOW | FS_IN_IGNORED | \ - FS_OPEN_PERM | FS_ACCESS_PERM | FS_EXCL_UNLINK | \ - FS_ISDIR | FS_IN_ONESHOT | FS_DN_RENAME | \ - FS_DN_MULTISHOT | FS_EVENT_ON_CHILD) + FS_OPEN_PERM | FS_ACCESS_PERM | \ + FS_EXCL_UNLINK | FS_ISDIR | FS_IN_ONESHOT | \ + FS_DN_RENAME | FS_DN_MULTISHOT | \ + FS_EVENT_ON_CHILD | FS_EVENT_ON_SB) struct fsnotify_group; struct fsnotify_event; -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html