From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85B33C43218 for ; Sun, 28 Apr 2019 03:09:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 32F63206BB for ; Sun, 28 Apr 2019 03:09:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gvoBbgER" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726383AbfD1DJF (ORCPT ); Sat, 27 Apr 2019 23:09:05 -0400 Received: from mail-qk1-f196.google.com ([209.85.222.196]:33913 "EHLO mail-qk1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726112AbfD1DJF (ORCPT ); Sat, 27 Apr 2019 23:09:05 -0400 Received: by mail-qk1-f196.google.com with SMTP id n68so4179441qka.1; Sat, 27 Apr 2019 20:09:04 -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=nqnAxYzHNiF1oCAn26AcLBB6X7euqmROqWphDqeaRw0=; b=gvoBbgERWcmsrYyUYORGcU8MIwsTG7CfV0pKmNPL7gv94U96JFO+cZ+6t1UJBSh6wL GzPdgN2Rf2VD0+NXN+miZeTpQ4rFxzXN5g5Gfr2Kw6Fy7FrB2cE+o6uok7v0I9QTWHmD uOrSMGBwrMyOIp/FPRVeKeRewjvZQjiO4Vwq2dOuNLqAkKgBI/BZX6hah9QT+ad6T1SK opzzH+hea5sY29xii4pUw6umyh1dxGGveIi7It9uaNcQXIRvLSkkdENwnjASZRP6vAqf Rlg2QJ0ZL8sfrB4w94WnPYHBqvw4EO+DOfjcm2OspOZ1pCeBrVRAT4FdXtRKzGQEY9wE iyjA== 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=nqnAxYzHNiF1oCAn26AcLBB6X7euqmROqWphDqeaRw0=; b=gOoj4+2rpNtZ0ZV/nN9sewcR2aTvCQODjfiEyA2nUyUWvOlgK5Gzr1XrrXRwG8k1MV D28qP4YvFsql1jUcbu422ieI4Iq4TjYFxj6tjVC2LgYfLtYFgkRebaXRvkrFEGHFKMOp OWH4zuVGA0ByFMtkk4qSi88rh+8GVzrvF8f3YX2EG2TXmzSZHVRdds0cTuJGzv+x6BNi VIzonMQfyzPAanBCGj0RauA3ZnqIx2HUvS/tqhng7Tb/dxOy330GT0W6LTdDV9Y6SnUc 3WqD1TZjeXvCdDsyET+SgC/F+OVNh4OvbSq+GSF3FTvBpYg7Uy0Ib1QcFNSBfNY8MIl+ U2rQ== X-Gm-Message-State: APjAAAVQtu6aFU8MAgVzFgxM4YYPr3AWhpRq1UIUpi//cpcgQCywBnGi kVPxWCW/JDccRNwS54tEMzkdLkIRzPsTbAPoBBc= X-Google-Smtp-Source: APXvYqxEkTIWtERik2M/mbOh/aW6pMUVX12Jd9mTmsQzL+Ov0Z0yrQyFGohhBRyLJXDBqTlXtS93w1UK7Vc53mpjPVU= X-Received: by 2002:a05:620a:112a:: with SMTP id p10mr25859500qkk.176.1556420944258; Sat, 27 Apr 2019 20:09:04 -0700 (PDT) MIME-Version: 1.0 References: <20190424163950.14123-1-amir73il@gmail.com> In-Reply-To: <20190424163950.14123-1-amir73il@gmail.com> From: Murphy Zhou Date: Sun, 28 Apr 2019 11:08:52 +0800 Message-ID: Subject: Re: [PATCH v2] ovl: do not generate duplicate fsnotify events for "fake" path To: Amir Goldstein Cc: Miklos Szeredi , Jan Kara , Linux-Fsdevel , linux-unionfs@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org On Thu, Apr 25, 2019 at 12:39 AM Amir Goldstein wrote: > > Overlayfs "fake" path is used for stacked file operations on > underlying files. Operations on files with "fake" path must not > generate fsnotify events with path data, because those events have > already been generated at overlayfs layer and because the reported > event->fd for fanotify marks on underlying inode/filesystem will > have the wrong path (the overlayfs path). > > Link: https://lore.kernel.org/linux-fsdevel/20190423065024.12695-1-jencce.kernel@gmail.com/ > Reported-by: Murphy Zhou > Fixes: d1d04ef8572b ("ovl: stack file ops") > Signed-off-by: Amir Goldstein > --- > > Miklos, > > V1 was addressed to Jan and was trying to teach fsnotify about fake path. > V2 leaves fsnotify subsystem alone and just sets the FMODE_NONOTIFY > flag on realfile. All the rest of the complications with mark mounts > are irrelevant. > > Same extended fanotify06 that was used to verify V1 also verified V2. Thanks for fixing this! My overlayfs tests on this patch looks good. M > > Thanks, > Amir. > > fs/overlayfs/file.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c > index ddfd93f13cc5..7d2f01957e40 100644 > --- a/fs/overlayfs/file.c > +++ b/fs/overlayfs/file.c > @@ -29,10 +29,11 @@ static struct file *ovl_open_realfile(const struct file *file, > struct inode *inode = file_inode(file); > struct file *realfile; > const struct cred *old_cred; > + int flags = file->f_flags | O_NOATIME | FMODE_NONOTIFY; > > old_cred = ovl_override_creds(inode->i_sb); > - realfile = open_with_fake_path(&file->f_path, file->f_flags | O_NOATIME, > - realinode, current_cred()); > + realfile = open_with_fake_path(&file->f_path, flags, realinode, > + current_cred()); > revert_creds(old_cred); > > pr_debug("open(%p[%pD2/%c], 0%o) -> (%p, 0%o)\n", > @@ -50,7 +51,7 @@ static int ovl_change_flags(struct file *file, unsigned int flags) > int err; > > /* No atime modificaton on underlying */ > - flags |= O_NOATIME; > + flags |= O_NOATIME | FMODE_NONOTIFY; > > /* If some flag changed that cannot be changed then something's amiss */ > if (WARN_ON((file->f_flags ^ flags) & ~OVL_SETFL_MASK)) > -- > 2.17.1 >