[v5,00/17] fanotify: add support for more event types
mbox series

Message ID 20190110170444.30616-1-amir73il@gmail.com
Headers show
Series
  • fanotify: add support for more event types
Related show

Message

Amir Goldstein Jan. 10, 2019, 5:04 p.m. UTC
Jan,

This is the 5th revision of patch series to add support for filesystem
change monitoring to fanotify.

The complete work is available on fanotify_dirent-v5 branch [1] on github.

LTP tests by Matthew Bobrowski for FAN_REPORT_FID are available on
my LTP branch fanotify_fid [2]. A WIP test for dirent events is
available on my LTP branch fanotify_dirent [3].
Matthew Bobrowski is working on a proper test for dirent events and on
man pages for both FAN_REPORT_FID and dirent events (Thanks!).

The combined functionality of FAN_MARK_FILESYSTEM, FAN_REPORT_FID and
dirent modification events is demonstrated with a prototype of global
filesystem monitor based on inotify-tools [4].

Thanks,
Amir.

Changes since v4:
- Rebase on v5.0-rc1
- Address style review comments on v4
- info_len includes padding to info_hdr alignment
- handle caching of fsid correctly when inotify marks on object exist
- Report dirent events on subdirs only with FAN_ONDIR
- Report XXX_SELF events on directories only with FAN_ONDIR
- Do not merge dirent events on subdirs with dirent events on non subdirs

[1] https://github.com/amir73il/linux/commits/fanotify_dirent-v5
[2] https://github.com/amir73il/ltp/commits/fanotify_fid
[3] https://github.com/amir73il/ltp/commits/fanotify_dirent
[4] https://github.com/amir73il/inotify-tools/commits/fanotify_dirent

Amir Goldstein (17):
  fsnotify: annotate directory entry modification events
  fsnotify: remove dirent events from FS_EVENTS_POSS_ON_CHILD mask
  fsnotify: send all event types to super block marks
  fsnotify: move mask out of struct fsnotify_event
  fanotify: rename struct fanotify_{,perm_}event_info
  fanotify: open code fill_event_metadata()
  fanotify: encode file identifier for FAN_REPORT_FID
  fanotify: copy event fid info to user
  fanotify: enable FAN_REPORT_FID init flag
  fanotify: cache fsid in fsnotify_mark_connector
  vfs: add vfs_get_fsid() helper
  fanotify: use vfs_get_fsid() helper instead of vfs_statfs()
  fsnotify: report FS_ISDIR flag with MOVE_SELF and DELETE_SELF events
  fanotify: check FS_ISDIR flag instead of d_is_dir()
  fanotify: support events with data type FSNOTIFY_EVENT_INODE
  fanotify: add support for create/attrib/move/delete events
  fanotify: report FAN_ONDIR to listener with FAN_REPORT_FID

 fs/notify/fanotify/fanotify.c        | 229 +++++++++++++++++----
 fs/notify/fanotify/fanotify.h        | 105 ++++++++--
 fs/notify/fanotify/fanotify_user.c   | 288 +++++++++++++++++++--------
 fs/notify/fsnotify.c                 |  15 +-
 fs/notify/inotify/inotify.h          |   1 +
 fs/notify/inotify/inotify_fsnotify.c |  18 +-
 fs/notify/inotify/inotify_user.c     |   5 +-
 fs/notify/mark.c                     |  47 ++++-
 fs/notify/notification.c             |  22 +-
 fs/statfs.c                          |  14 ++
 include/linux/fanotify.h             |  26 ++-
 include/linux/fsnotify.h             |  94 +++++++--
 include/linux/fsnotify_backend.h     |  70 ++++---
 include/linux/statfs.h               |   3 +
 include/uapi/linux/fanotify.h        |  29 +++
 15 files changed, 753 insertions(+), 213 deletions(-)

Comments

Jan Kara Feb. 7, 2019, 4:26 p.m. UTC | #1
Hello,

On Thu 10-01-19 19:04:27, Amir Goldstein wrote:
> This is the 5th revision of patch series to add support for filesystem
> change monitoring to fanotify.
> 
> The complete work is available on fanotify_dirent-v5 branch [1] on github.
> 
> LTP tests by Matthew Bobrowski for FAN_REPORT_FID are available on
> my LTP branch fanotify_fid [2]. A WIP test for dirent events is
> available on my LTP branch fanotify_dirent [3].
> Matthew Bobrowski is working on a proper test for dirent events and on
> man pages for both FAN_REPORT_FID and dirent events (Thanks!).
> 
> The combined functionality of FAN_MARK_FILESYSTEM, FAN_REPORT_FID and
> dirent modification events is demonstrated with a prototype of global
> filesystem monitor based on inotify-tools [4].

OK, I've finally got to reading all the patches and pushing them to my tree
with some small changes. The result is in 'fsnotify' branch in my tree. All
LTP tests (including the new ones) passed so if 0-day does not barf, I'll
push the branch to for_next tomorrow. Thanks for your work!

								Honza

> 
> Thanks,
> Amir.
> 
> Changes since v4:
> - Rebase on v5.0-rc1
> - Address style review comments on v4
> - info_len includes padding to info_hdr alignment
> - handle caching of fsid correctly when inotify marks on object exist
> - Report dirent events on subdirs only with FAN_ONDIR
> - Report XXX_SELF events on directories only with FAN_ONDIR
> - Do not merge dirent events on subdirs with dirent events on non subdirs
> 
> [1] https://github.com/amir73il/linux/commits/fanotify_dirent-v5
> [2] https://github.com/amir73il/ltp/commits/fanotify_fid
> [3] https://github.com/amir73il/ltp/commits/fanotify_dirent
> [4] https://github.com/amir73il/inotify-tools/commits/fanotify_dirent
> 
> Amir Goldstein (17):
>   fsnotify: annotate directory entry modification events
>   fsnotify: remove dirent events from FS_EVENTS_POSS_ON_CHILD mask
>   fsnotify: send all event types to super block marks
>   fsnotify: move mask out of struct fsnotify_event
>   fanotify: rename struct fanotify_{,perm_}event_info
>   fanotify: open code fill_event_metadata()
>   fanotify: encode file identifier for FAN_REPORT_FID
>   fanotify: copy event fid info to user
>   fanotify: enable FAN_REPORT_FID init flag
>   fanotify: cache fsid in fsnotify_mark_connector
>   vfs: add vfs_get_fsid() helper
>   fanotify: use vfs_get_fsid() helper instead of vfs_statfs()
>   fsnotify: report FS_ISDIR flag with MOVE_SELF and DELETE_SELF events
>   fanotify: check FS_ISDIR flag instead of d_is_dir()
>   fanotify: support events with data type FSNOTIFY_EVENT_INODE
>   fanotify: add support for create/attrib/move/delete events
>   fanotify: report FAN_ONDIR to listener with FAN_REPORT_FID
> 
>  fs/notify/fanotify/fanotify.c        | 229 +++++++++++++++++----
>  fs/notify/fanotify/fanotify.h        | 105 ++++++++--
>  fs/notify/fanotify/fanotify_user.c   | 288 +++++++++++++++++++--------
>  fs/notify/fsnotify.c                 |  15 +-
>  fs/notify/inotify/inotify.h          |   1 +
>  fs/notify/inotify/inotify_fsnotify.c |  18 +-
>  fs/notify/inotify/inotify_user.c     |   5 +-
>  fs/notify/mark.c                     |  47 ++++-
>  fs/notify/notification.c             |  22 +-
>  fs/statfs.c                          |  14 ++
>  include/linux/fanotify.h             |  26 ++-
>  include/linux/fsnotify.h             |  94 +++++++--
>  include/linux/fsnotify_backend.h     |  70 ++++---
>  include/linux/statfs.h               |   3 +
>  include/uapi/linux/fanotify.h        |  29 +++
>  15 files changed, 753 insertions(+), 213 deletions(-)
> 
> -- 
> 2.17.1
>