On Mon, Apr 26, 2021 at 9:43 PM Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxx> wrote: > > The FAN_ERROR mark is used by filesystem wide monitoring tools to > receive notifications of type FS_ERROR_EVENT, emited by filesystems when > a problem is detected. The error notification includes a generic error > descriptor, an optional location record and a filesystem specific blob. > > Signed-off-by: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxx> > --- > fs/notify/fanotify/fanotify.c | 48 +++++++++++++++++++---- > fs/notify/fanotify/fanotify.h | 8 ++++ > fs/notify/fanotify/fanotify_user.c | 63 ++++++++++++++++++++++++++++++ > include/linux/fanotify.h | 9 ++++- > include/uapi/linux/fanotify.h | 2 + > 5 files changed, 120 insertions(+), 10 deletions(-) > > diff --git a/fs/notify/fanotify/fanotify.c b/fs/notify/fanotify/fanotify.c > index 98591a8155a7..6bae23d42e5e 100644 > --- a/fs/notify/fanotify/fanotify.c > +++ b/fs/notify/fanotify/fanotify.c > @@ -240,12 +240,14 @@ static u32 fanotify_group_event_mask(struct fsnotify_group *group, > __func__, iter_info->report_mask, event_mask, data, data_type); > > if (!fid_mode) { > - /* Do we have path to open a file descriptor? */ > - if (!path) > - return 0; > - /* Path type events are only relevant for files and dirs */ > - if (!d_is_reg(path->dentry) && !d_can_lookup(path->dentry)) > - return 0; > + if (!fanotify_is_error_event(event_mask)) { This open coded nested condition is not nice. If we get as far as this, I will explain what needs to be done. Need helpers fanotify_is_reporting_fd(), fanotify_is_reporting_fid() and fanotify_is_reporting_dir_fid(). Thanks, Amir.