From patchwork Fri Aug 11 06:45:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ruan.meisi@zte.com.cn X-Patchwork-Id: 134349 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp920658vqi; Fri, 11 Aug 2023 00:47:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFH5zC5mfl631nGA5guZ4GHMFkrVwkzlTe3kkW2lkgFcdIFAJHirw6pmNOQx12WxQUw0YNl X-Received: by 2002:a05:6a20:9383:b0:141:d54e:a907 with SMTP id x3-20020a056a20938300b00141d54ea907mr1408638pzh.19.1691740036016; Fri, 11 Aug 2023 00:47:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691740035; cv=none; d=google.com; s=arc-20160816; b=DfHhNvm6PhTtYFn8itwc+OojA4YNOnDGZI6o3oFZtvEni2ba3Z7jee8ujFCePSuaVH e+II3luFqC0H2+c/+i4WHMPle2iUMN/Lm000QVyBfCSLbKcUm4C+xlaSZLXQd7jjAz/y 7rLFaXZHi0kRQDQ4GMDt8NXj7+Gwn1LvoF1ZPzDZkEona9QbOEC7+QBV5oViGhT4NOKB 3h44ooBxAX0LXadizPZNx9dKOtBmUyHC9DCz+94OozE3uDOwhcYCHE2bPuv7GSiAq7Lp MROYj0XFYqsgN9f4LOgBDHfOvcKDvJRFwOVjKWnpOAb5AKIaFMimH1LoK4w34M9ZNrTx yzJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:cc:to:from:mime-version:references :in-reply-to:date:message-id; bh=Glebj1zrlNIaOeHjbaXFNdxlpV2au0sZhMOku4LiHz0=; fh=GCXTBCQ3luc4JOrdbRZCfhMxB/xg09yCjjA0JW8R0nU=; b=MtNb4RVy12oZ91qGVYC52av3SZe599f25+ZVoJ6v8f9nwEUvi+Uf2DJ2ov0CHntPbA 6AG2rYxo22M5si0HdEYlQT6VV7znISKyHuosfUAOB3x0QVWuQT6Dt8S5Z2u8oLXnZ2gb Wsjm6q0aCUGqaPJiIMnuAY+KskPUtSk4uZB3Y+wy6+aH3VeVWGwgTvxWWYylpsrcsGrZ V7aJJjRa2ywvuecGeAb60IKPl8UPXYL4+GLBaBB6RSB34QgOPH/pW/9Wc9pWwH6qEVro eir3/xYjhXpeYP3RIb+9oSV3Ozq2zgKcX6G6oxribPbtJexIrHPhXKXqlZrGsFaHNQey Y1yQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zte.com.cn Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ct15-20020a056a000f8f00b00625559a78a2si3040047pfb.107.2023.08.11.00.47.02; Fri, 11 Aug 2023 00:47:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zte.com.cn Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233157AbjHKHMZ (ORCPT + 99 others); Fri, 11 Aug 2023 03:12:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229867AbjHKHMY (ORCPT ); Fri, 11 Aug 2023 03:12:24 -0400 X-Greylist: delayed 100029 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Fri, 11 Aug 2023 00:12:22 PDT Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [63.216.63.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8FE4C271B; Fri, 11 Aug 2023 00:12:22 -0700 (PDT) Received: from mse-fl2.zte.com.cn (unknown [10.5.228.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4RMZjr6fxLz7VH8K; Fri, 11 Aug 2023 15:12:16 +0800 (CST) Received: (from root@localhost) by mse-fl2.zte.com.cn id 37B7CIwo078462; Fri, 11 Aug 2023 15:12:18 +0800 (+08) (envelope-from ruan.meisi@zte.com.cn) Message-Id: <202308110712.37B7CIwo078462@mse-fl2.zte.com.cn> Received: from szxlzmapp07.zte.com.cn ([10.5.230.251]) by mse-fl1.zte.com.cn with SMTP id 37B6iwPA052147; Fri, 11 Aug 2023 14:44:58 +0800 (+08) (envelope-from ruan.meisi@zte.com.cn) Received: from mapi (szxlzmapp05[null]) by mapi (Zmail) with MAPI id mid14; Fri, 11 Aug 2023 14:45:00 +0800 (CST) Date: Fri, 11 Aug 2023 14:45:00 +0800 (CST) X-Zmail-TransId: 2b0764d5d8ec586-a4a37 X-Mailer: Zmail v1.0 In-Reply-To: References: 202308100325.37A3P8fF000898@mse-db.zte.com.cn,CAJfpegtjQxPd-nncaf+7pvowSJHx+2mLgOZBJuCLXetnSCuqog@mail.gmail.com Mime-Version: 1.0 From: To: Cc: , Subject: =?utf-8?q?=C2=A0=5BPATCH=5D_nlookup_missing_decrement_in_fuse=5Fdir?= =?utf-8?q?entplus=5Flink?= X-MAIL: mse-fl2.zte.com.cn 37B7CIwo078462 X-MSS: AUDITRELEASE@mse-fl2.zte.com.cn X-Fangmail-Gw-Spam-Type: 0 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 64D5DF50.001/4RMZjr6fxLz7VH8K X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, MSGID_FROM_MTA_HEADER,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773918000021322960 X-GMAIL-MSGID: 1773918000021322960 From 53aad83672123dbe01bcef9f9026becc4e93ee9f Mon Sep 17 00:00:00 2001 From: ruanmeisi Date: Tue, 25 Apr 2023 19:13:54 +0800 Subject: [PATCH] nlookup missing decrement in fuse_direntplus_link During our debugging of glusterfs, we found an Assertion failed error: inode_lookup >= nlookup, which was caused by the nlookup value in the kernel being greater than that in the FUSE file system.The issue was introduced by fuse_direntplus_link, where in the function, fuse_iget increments nlookup, and if d_splice_alias returns failure, fuse_direntplus_link returns failure without decrementing nlookup https://github.com/gluster/glusterfs/pull/4081 Signed-off-by: ruanmeisi --- fs/fuse/readdir.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/fs/fuse/readdir.c b/fs/fuse/readdir.c index dc603479b30e..b3d498163f97 100644 --- a/fs/fuse/readdir.c +++ b/fs/fuse/readdir.c @@ -243,8 +243,16 @@ static int fuse_direntplus_link(struct file *file, dput(dentry); dentry = alias; } - if (IS_ERR(dentry)) + if (IS_ERR(dentry)) { + if (!IS_ERR(inode)) { + struct fuse_inode *fi = get_fuse_inode(inode); + + spin_lock(&fi->lock); + fi->nlookup--; + spin_unlock(&fi->lock); + } return PTR_ERR(dentry); + } } if (fc->readdirplus_auto) set_bit(FUSE_I_INIT_RDPLUS, &get_fuse_inode(inode)->state);