[PATCH v4 00/15] fanotify: add support for more event types

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jan,

This is the 4th revision of patch series to add support for filesystem
change monitoring to fanotify.
It incorporates the changes you requested in review of v3 FAN_REPORT_FID
patches.
The complete work is available on fanotify_dirent branch [1] on my tree.

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 [2].

In your review of v3 patched you only got as far as patch v3 9/13.
Because this patch marks the end of the FAN_REPORT_FID sub series,
I found it best to re-post the entire series with the changes you
requested thus far. For convenience of review, I pushed branches
fanotify_fid-v3 [3] and fanotify_fid-v4 [4] with the work you
reviewed so far and its re-worked version.

One thing that we discussed and I did NOT do is move struct file_handle
to uapi headers. This got complicated due to existing definitions in
glibc header files and I realized we could do without it.

I have added the vfs_get_fsid() helper as you requested, but since it
wasn't required by the patch set, I added it as two new cleanup patches
at the end of the FAN_REPORT_FID series, so you will be able to stage
the feature with or without the VFS change.

Thanks,
Amir.

Changes since v3:
- Re-organize structs fsnotify_event and fanotify_event to pack
  the fields better on 64bit arch (NEW patch "move mask out of...")
- Re-arrange building event fid in two main patches: "encode fid..."
  to in-kernel event struct and "copy event fid..." to uapi format
- Avoid exporting statfs_by_dentry() and add 2 NEW cleanup patches
  to use new helper vfs_get_fsid()
- Replace dodgy code using pointer bit 0 with proper type field
  in fanotify_event to indicate if path or fid info was stored
- Store up to 12 bytes (on 32bit) or 16 bytes (on 64bit) of embedded
  file handle in fanotify_event to refrain from small memory allocations
- Re-arrange code in copy_event_to_user(), so adding copy of fid to
  user is less convoluted
- Replace convoluted code to verify all marks for a reported event
  have the same cached fsid with simpler code than uses any cached fsid

Changes since v2:
- Discard FSNOTIFY_EVENT_DENTRY data type changes
- Cache fsid in connector instead of calling vfs_statfs() on every event
- Deny setting fid watch on filesystem with no fsid (tmpfs)
- Deny setting fid watch on filesystem with non root fsid (btrfs subvol)
- Report FAN_ONDIR for all event types with FAN_REPORT_FID

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

Amir Goldstein (15):
  fsnotify: annotate directory entry modification events
  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()
  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        | 228 +++++++++++++++++----
 fs/notify/fanotify/fanotify.h        | 109 ++++++++--
 fs/notify/fanotify/fanotify_user.c   | 284 +++++++++++++++++++--------
 fs/notify/fsnotify.c                 |  15 +-
 fs/notify/inotify/inotify.h          |   1 +
 fs/notify/inotify/inotify_fsnotify.c |   9 +-
 fs/notify/inotify/inotify_user.c     |   5 +-
 fs/notify/mark.c                     |  44 ++++-
 fs/notify/notification.c             |  22 +--
 fs/statfs.c                          |  14 ++
 include/linux/fanotify.h             |  33 +++-
 include/linux/fsnotify.h             |  45 ++++-
 include/linux/fsnotify_backend.h     |  70 ++++---
 include/linux/statfs.h               |   3 +
 include/uapi/linux/fanotify.h        |  29 +++
 15 files changed, 701 insertions(+), 210 deletions(-)

-- 
2.17.1




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux