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=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 EC113C433E0 for ; Wed, 3 Feb 2021 04:12:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AE09764E40 for ; Wed, 3 Feb 2021 04:12:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232148AbhBCEML (ORCPT ); Tue, 2 Feb 2021 23:12:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231313AbhBCEMG (ORCPT ); Tue, 2 Feb 2021 23:12:06 -0500 Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com [IPv6:2a00:1450:4864:20::233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3ED34C061573; Tue, 2 Feb 2021 20:11:25 -0800 (PST) Received: by mail-lj1-x233.google.com with SMTP id u4so25216814ljh.6; Tue, 02 Feb 2021 20:11:25 -0800 (PST) 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:content-transfer-encoding; bh=0bJbfKqkdKC41V9+M+ffkQ8uypn+q8BNjtK5tQpu9GY=; b=urbPdIWghoZ9BTE0VLI+9ed3/ecJQELmaST1oFf2L+c0mVNlYtOy/jo2buC9pwj2+2 vULxCxSGLiBgDirGZi4fc5gge0L/i5HtCjoEO99c4JhSIKg65g3fF+PwbI0U3dkJ1AZ2 eRgH8sz1ou9tJYyDArS3ZbarMjc3lHYlMIK8fMjB4oChf35bvtMy0hZR9voc2t/+HqTM 09kfqXl5d/qE5nsWww2MyyVPiZyZMyxdupPZ/GT7vy0qIPpSeks7cDIF9AsPhwpGbZn3 k0aj6rcXZHbaNxYHEDon4n+1McKM2aFuQ5P1ADxhc63z+zywWa9qEZJxDZRLv6Az2ZpI oWyw== 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:content-transfer-encoding; bh=0bJbfKqkdKC41V9+M+ffkQ8uypn+q8BNjtK5tQpu9GY=; b=CSAXv3zLDyhSrDDSkbujz83GLQXNXDx1ffVyg9XOlCXt2STOQxs4m4zNq1qZ7VJ3I9 3Pj/Us3P1CdWorxY3cNc9hrwQuT45tPH/56iEFsZbDjxY/YxYxyiV7elFAnAN7X9ykCC UFO5zKP0G++oHjyf8kmw0sci/wwrEH5VN+ujJIw28D/0p83PkzVhMKAm819dLYpl9igW GlFdi1DKAvklRlSVl5DafX9U5cLcbK0Vj8ifdDkFQ6lhycS1crn7N4tLhmRLaUndaK2a w/YItqnNgIjeuTCT0TS1hkB9FPlitqe0KyDPC1MoJGcwUkeUehClnN693Xv0oi1R73UY MsCg== X-Gm-Message-State: AOAM530A3WYg5seGq82tv9k6WmYrMfECCVI6Km4LLD+4Tjnb4TiRf7a/ B309COxYYWYTc95S9B0GMSiHzyYPsnHjKuK1P2A= X-Google-Smtp-Source: ABdhPJxaKx0yQPKF6W3Xc64QcKx6KwewO0NxZrnXws3VT0IyYzygWbJkmOyznGl27QpfpiaILD8y320Vm6CKOQRT0Fo= X-Received: by 2002:a2e:1503:: with SMTP id s3mr610872ljd.218.1612325483712; Tue, 02 Feb 2021 20:11:23 -0800 (PST) MIME-Version: 1.0 References: <20210202174255.4269-1-aaptel@suse.com> In-Reply-To: <20210202174255.4269-1-aaptel@suse.com> From: Steve French Date: Tue, 2 Feb 2021 22:11:12 -0600 Message-ID: Subject: Re: [PATCH v3] cifs: report error instead of invalid when revalidating a dentry fails To: =?UTF-8?Q?Aur=C3=A9lien_Aptel?= Cc: CIFS , linux-fsdevel , Shyam Prasad N Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-cifs@vger.kernel.org tentatively merged into cifs-2.6.git for-next pending a little more testing, and cc:stable as a separate patch - would like to know if worth trying the test case references in commit ecf3d1f1aa7 and adding the d_weak_revalidate routine that three filesystems added in that patch of Jeff. On Tue, Feb 2, 2021 at 11:43 AM Aur=C3=A9lien Aptel wrote= : > > From: Aurelien Aptel > > Assuming > - //HOST/a is mounted on /mnt > - //HOST/b is mounted on /mnt/b > > On a slow connection, running 'df' and killing it while it's > processing /mnt/b can make cifs_get_inode_info() returns -ERESTARTSYS. > > This triggers the following chain of events: > =3D> the dentry revalidation fail > =3D> dentry is put and released > =3D> superblock associated with the dentry is put > =3D> /mnt/b is unmounted > > This patch makes cifs_d_revalidate() return the error instead of > 0 (invalid) when cifs_revalidate_dentry() fails, except for ENOENT > where that error means the dentry is invalid. > > Signed-off-by: Aurelien Aptel > Suggested-by: Shyam Prasad N > --- > fs/cifs/dir.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c > index 68900f1629bff..868c0b7263ec0 100644 > --- a/fs/cifs/dir.c > +++ b/fs/cifs/dir.c > @@ -737,6 +737,7 @@ static int > cifs_d_revalidate(struct dentry *direntry, unsigned int flags) > { > struct inode *inode; > + int rc; > > if (flags & LOOKUP_RCU) > return -ECHILD; > @@ -746,8 +747,11 @@ cifs_d_revalidate(struct dentry *direntry, unsigned = int flags) > if ((flags & LOOKUP_REVAL) && !CIFS_CACHE_READ(CIFS_I(ino= de))) > CIFS_I(inode)->time =3D 0; /* force reval */ > > - if (cifs_revalidate_dentry(direntry)) > - return 0; > + rc =3D cifs_revalidate_dentry(direntry); > + if (rc) { > + cifs_dbg(FYI, "cifs_revalidate_dentry failed with= rc=3D%d", rc); > + return rc =3D=3D -ENOENT ? 0 : rc; > + } > else { > /* > * If the inode wasn't known to be a dfs entry wh= en > -- > 2.29.2 > -- Thanks, Steve