Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp4932674pxv; Tue, 29 Jun 2021 20:40:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxSHT9+1eAoxP/7lfEhshAD6Ku621xdWQr+BYBMHvv37XKiEhM/LXhvo/Xj2R+BmU6AEK5W X-Received: by 2002:a17:906:dbd9:: with SMTP id yc25mr33629627ejb.267.1625024442550; Tue, 29 Jun 2021 20:40:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625024442; cv=none; d=google.com; s=arc-20160816; b=eIi0CU7Y6+8zSH0ovCnvFbrY00KQ8uznk7ozHL9GxBF0v1Y7kJr1rxOKwzGjvoYdTW BecPhD+bI07Qg+4vqCSzPb4mjQkJhmLdqcvU9Cq0DgmOHA44pYUUKyVsGRZDaEsj/H4Q t3GZy9eRl+xVafGlJnpRL+FuHNdLWhhR+0l9JHH1p1hKMuETdTf7rbGck+3BXl4kdhk1 Q7I4r38U/CnyI8yFRIGWY1CPr6z4GOrNrjcT59KT50agpOOtPUaQUpqA1D8XFgSuunuo px9PBkeL2MAggU+0ATwCYusCkf5UoSR31CNlJVLFExUPp6Rv3dV4SlS81DS0EpR9lELe gt6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=Kdz7uL0Ru1LcZD7JQPGwULRGlOCeqsP2VoZEDjSMQlY=; b=pEbJFVhCfIIyupkS4Ea3z0ENW3SHVHPo0mZd6nsKX8Nm60acIXktt9FJYN4YlC9Qkw oxQspoEJSZ7PTuTWrGR1VIx4GFZ5nC2ufF4Y5OSRjx+wjgO7z+Xzy03wrffqxZRuJR0D 5bTYugRCLpfH/6abnkbGYBpRL2ZUvrbDOcfBpTKjJgbiu/0JpMwZDyNKc+/iEU4TBpJL Acv/hEHk1gXkzfQwYuUXhm5f0wf2z69FZzixDjukIg586AtrPJaEfoXui39iUekRjaoE 0V55MF4aV7stH9gWoE06U+3x/dlAQB8w52SyMDVYh1J5UFzUC6sOPpLLTqYLpu9Lb7sp MsbQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VXePGl39; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s2si19819888ejm.432.2021.06.29.20.40.17; Tue, 29 Jun 2021 20:40:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VXePGl39; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232584AbhF3Dmm (ORCPT + 99 others); Tue, 29 Jun 2021 23:42:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232373AbhF3Dmm (ORCPT ); Tue, 29 Jun 2021 23:42:42 -0400 Received: from mail-io1-xd2a.google.com (mail-io1-xd2a.google.com [IPv6:2607:f8b0:4864:20::d2a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E41FC061760; Tue, 29 Jun 2021 20:40:13 -0700 (PDT) Received: by mail-io1-xd2a.google.com with SMTP id b7so1422410ioq.12; Tue, 29 Jun 2021 20:40:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Kdz7uL0Ru1LcZD7JQPGwULRGlOCeqsP2VoZEDjSMQlY=; b=VXePGl39rmcqSjh36WeFhfqj/BUfBIRYom1btR0GztXJODJ7sFGXlzb5o4TZDVCErc 8YRwJoYG44qpl5hhoMkuWJ4p7erW/p6RQd0uXHJRIH42I0N7Z/sYoDrNtNDPKDEt55l0 MvX0lF1C5jURbknzSXn/OPAGRp4nAvuEXFmeAGqxEyPrAhy2rpvUEKfvB0EomL+9y78m MUuXN/1IsVXlLmHTTYyWgU/+Q35esCN93aNHlbPKldhiM6oGYHmJcIBEHbmsFv8fC4DW ow390bwr8OHcZEP0dWwFw946Qwt9YK1kWDdhwF+INjj1lilZ0aVRteF7KNbQBf9Jn1WJ NQug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Kdz7uL0Ru1LcZD7JQPGwULRGlOCeqsP2VoZEDjSMQlY=; b=cFr4u0pYGkLOQ4dRpLO8qreerSORcA5Kr5v612ZGZFkDGqaHRX57kgvrIMkAI5SLxD naGNVZXYAjggaiO1ohrdFmu22SibFjFLhZv7S9EDgvADIU2A7VL6w/clW5TUo2kF/PkQ KXuJmJX10uLBW1wESgB6D/33dWcyXlijnRMN58HuRc8r0Z3rYAU+7UHxKBDa/hUkYWaC v6etuRrcW/Lp+LM0P40c8FtUQRorc5YSDTj0zRoMoCa57BTy5/oDroKTZiJv3S+mOyhr jNPOINAKA6mmDK3EzAEh4KBLYYa+kqfZwKvfr8I5B4SUeiF9AptuwOc7Cfm+wPGUuN1+ 91xA== X-Gm-Message-State: AOAM531tmPeODrIHEd3BOhUD85u6aeJfyeuV5DMslrqLhxRQvPRphkZs 1BGzPnedIeKzEwEt6oQq5m0n+4Lf+ZQaHww6Axo= X-Received: by 2002:a02:3505:: with SMTP id k5mr7060303jaa.123.1625024411866; Tue, 29 Jun 2021 20:40:11 -0700 (PDT) MIME-Version: 1.0 References: <20210629191035.681913-1-krisman@collabora.com> <20210629191035.681913-9-krisman@collabora.com> In-Reply-To: <20210629191035.681913-9-krisman@collabora.com> From: Amir Goldstein Date: Wed, 30 Jun 2021 06:40:00 +0300 Message-ID: Subject: Re: [PATCH v3 08/15] fsnotify: Support passing argument to insert callback on add_event To: Gabriel Krisman Bertazi Cc: "Darrick J. Wong" , Theodore Tso , Dave Chinner , Jan Kara , David Howells , Khazhismel Kumykov , linux-fsdevel , Ext4 , kernel@collabora.com Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org On Tue, Jun 29, 2021 at 10:12 PM Gabriel Krisman Bertazi wrote: > > FAN_FS_ERROR requires some initialization to happen from inside the > insert hook. This allows a user of fanotify_add_event to pass an > argument to be sent to the insert callback. > > Signed-off-by: Gabriel Krisman Bertazi Reviewed-by: Amir Goldstein with optional suggestion for improvement... > --- > fs/notify/fanotify/fanotify.c | 5 +++-- > fs/notify/inotify/inotify_fsnotify.c | 2 +- > fs/notify/notification.c | 6 ++++-- > include/linux/fsnotify_backend.h | 7 +++++-- > 4 files changed, 13 insertions(+), 7 deletions(-) > > diff --git a/fs/notify/fanotify/fanotify.c b/fs/notify/fanotify/fanotify.c > index 4f2febb15e94..aba06b84da91 100644 > --- a/fs/notify/fanotify/fanotify.c > +++ b/fs/notify/fanotify/fanotify.c > @@ -695,7 +695,8 @@ static __kernel_fsid_t fanotify_get_fsid(struct fsnotify_iter_info *iter_info) > * Add an event to hash table for faster merge. > */ > static void fanotify_insert_event(struct fsnotify_group *group, > - struct fsnotify_event *fsn_event) > + struct fsnotify_event *fsn_event, > + const void *data) > { > struct fanotify_event *event = FANOTIFY_E(fsn_event); > unsigned int bucket = fanotify_event_hash_bucket(group, event); > @@ -779,7 +780,7 @@ static int fanotify_handle_event(struct fsnotify_group *group, u32 mask, > > fsn_event = &event->fse; > ret = fsnotify_add_event(group, fsn_event, fanotify_merge, > - fanotify_insert_event); > + fanotify_insert_event, NULL); > if (ret) { > /* Permission events shouldn't be merged */ > BUG_ON(ret == 1 && mask & FANOTIFY_PERM_EVENTS); > diff --git a/fs/notify/inotify/inotify_fsnotify.c b/fs/notify/inotify/inotify_fsnotify.c > index d1a64daa0171..a003a64ff8ee 100644 > --- a/fs/notify/inotify/inotify_fsnotify.c > +++ b/fs/notify/inotify/inotify_fsnotify.c > @@ -116,7 +116,7 @@ int inotify_handle_inode_event(struct fsnotify_mark *inode_mark, u32 mask, > if (len) > strcpy(event->name, name->name); > > - ret = fsnotify_add_event(group, fsn_event, inotify_merge, NULL); > + ret = fsnotify_add_event(group, fsn_event, inotify_merge, NULL, NULL); > if (ret) { > /* Our event wasn't used in the end. Free it. */ > fsnotify_destroy_event(group, fsn_event); > diff --git a/fs/notify/notification.c b/fs/notify/notification.c > index 32f45543b9c6..0d9ba592d725 100644 > --- a/fs/notify/notification.c > +++ b/fs/notify/notification.c > @@ -83,7 +83,9 @@ int fsnotify_add_event(struct fsnotify_group *group, > int (*merge)(struct fsnotify_group *, > struct fsnotify_event *), > void (*insert)(struct fsnotify_group *, > - struct fsnotify_event *)) > + struct fsnotify_event *, > + const void *), > + const void *insert_data) > { > int ret = 0; > struct list_head *list = &group->notification_list; > @@ -121,7 +123,7 @@ int fsnotify_add_event(struct fsnotify_group *group, > group->q_len++; > list_add_tail(&event->list, list); > if (insert) > - insert(group, event); > + insert(group, event, insert_data); > spin_unlock(&group->notification_lock); > > wake_up(&group->notification_waitq); > diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h > index b1590f654ade..8222fe12a6c9 100644 > --- a/include/linux/fsnotify_backend.h > +++ b/include/linux/fsnotify_backend.h > @@ -526,11 +526,14 @@ extern int fsnotify_add_event(struct fsnotify_group *group, > int (*merge)(struct fsnotify_group *, > struct fsnotify_event *), > void (*insert)(struct fsnotify_group *, > - struct fsnotify_event *)); > + struct fsnotify_event *, > + const void *), > + const void *insert_data); > + > /* Queue overflow event to a notification group */ > static inline void fsnotify_queue_overflow(struct fsnotify_group *group) > { > - fsnotify_add_event(group, group->overflow_event, NULL, NULL); > + fsnotify_add_event(group, group->overflow_event, NULL, NULL, NULL); > } > Looking back, when I added the insert() callback, it might have been wiser to rename fsnotify_add_event() to fsnotify_insert_event() add a wrapper: static inline int fsnotify_add_event(group, event, merge) { return fsnotify_insert_event(group, event, merge, NULL); } But the two call sites did not seem to justify it. Perhaps with the growing list of NULL arguments it is time to reconsider this small tidy up? Not critical though. Thanks, Amir.