On Wed, Mar 25, 2020 at 5:54 PM Jan Kara <jack@xxxxxxx> wrote: > > Hi, > > On Thu 19-03-20 17:10:08, Amir Goldstein wrote: > > Jan, > > > > This v3 posting is a trimmed down version of v2 name info patches [1]. > > It includes the prep/fix patches and the patches to add support for > > the new FAN_DIR_MODIFY event, but leaves out the FAN_REPORT_NAME > > patches. I will re-post those as a later time. > > > > The v3 patches are available on my github branch fanotify_dir_modify [2]. > > Same branch names for LTP tests [3], man page draft [6] and a demo [7]. > > The fanotify_name branches in those github trees include the additional > > FAN_REPORT_NAME related changes. > > > > Main changes since v2: > > - Split fanotify_path_event fanotify_fid_event and fanotify_name_event > > - Drop the FAN_REPORT_NAME patches > > So I have pushed out the result to my tree (fsnotify branch and also pulled > it to for_next branch). Great! Liked the cleanups. Suggest to squash the attached simplification to "record name info" patch. I will start try to get to finalizing man page patch next week. Thanks, Amir.
From d42d388ed1a9f90a623552e6fabfa3418ceb40ae Mon Sep 17 00:00:00 2001 From: Amir Goldstein <amir73il@xxxxxxxxx> Date: Wed, 25 Mar 2020 18:50:16 +0200 Subject: [PATCH] fanotify: simplify record name info --- fs/notify/fanotify/fanotify.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/fs/notify/fanotify/fanotify.c b/fs/notify/fanotify/fanotify.c index 7a889da1ee12..4c1a4eb597d5 100644 --- a/fs/notify/fanotify/fanotify.c +++ b/fs/notify/fanotify/fanotify.c @@ -282,6 +282,9 @@ static void fanotify_encode_fh(struct fanotify_fh *fh, struct inode *inode, void *buf = fh->buf; int err; + if (!inode) + goto out; + dwords = 0; err = -ENOENT; type = exportfs_encode_inode_fh(inode, NULL, &dwords, NULL); @@ -315,6 +318,7 @@ static void fanotify_encode_fh(struct fanotify_fh *fh, struct inode *inode, type, bytes, err); kfree(ext_buf); *fanotify_fh_ext_buf_ptr(fh) = NULL; +out: /* Report the event without a file identifier on encode error */ fh->type = FILEID_INVALID; fh->len = 0; @@ -429,22 +433,12 @@ struct fanotify_event *fanotify_alloc_event(struct fsnotify_group *group, if (fsid && fanotify_event_fsid(event)) *fanotify_event_fsid(event) = *fsid; - if (fanotify_event_object_fh(event)) { - struct fanotify_fh *obj_fh = fanotify_event_object_fh(event); + if (fanotify_event_object_fh(event)) + fanotify_encode_fh(fanotify_event_object_fh(event), id, gfp); - if (id) - fanotify_encode_fh(obj_fh, id, gfp); - else - obj_fh->len = 0; - } - if (fanotify_event_dir_fh(event)) { - struct fanotify_fh *dir_fh = fanotify_event_dir_fh(event); + if (fanotify_event_dir_fh(event)) + fanotify_encode_fh(fanotify_event_dir_fh(event), id, gfp); - if (id) - fanotify_encode_fh(dir_fh, id, gfp); - else - dir_fh->len = 0; - } if (fanotify_event_has_path(event)) { struct path *p = fanotify_event_path(event); -- 2.17.1