From patchwork Fri Feb 3 03:47:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jingbo Xu X-Patchwork-Id: 52282 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp625776wrn; Thu, 2 Feb 2023 19:51:39 -0800 (PST) X-Google-Smtp-Source: AK7set+9SW5lSVSeXZpLN6eqCLjpMKMNmSRkcpb/l8qdNMwtLm6NNaF3jfkbXYXMr93yMk8IUVZM X-Received: by 2002:a17:907:d687:b0:88d:d304:3432 with SMTP id wf7-20020a170907d68700b0088dd3043432mr10002745ejc.60.1675396299803; Thu, 02 Feb 2023 19:51:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675396299; cv=none; d=google.com; s=arc-20160816; b=r7STfASgLQOTFws/y6V9544dSZ+/hmuVQ38yW2l6N+Qqh5EOak5r0I1pd2IpsSpZ8m gIHZrPZ97qPWYZXDiImmjc/h46Gcfe+DhYsmnYEr07dwjpZ3vJkVglZbFxFkm7myUznO EovjyjqH0eDETmXxFIz1hUyaUA2P6EtafbGOZhPGJMbynqf6cQzKdSWzWJdw3VoSl2c9 ao8THev+fvwQeDN+N8Ri9124x+npkAKKjVM7fzVdkt7OazM3YUVOMbd89nx2PpEFFNbr 3KBP7lqD9LpWo7SDup/DleqMm0OKaP5ipEEtqzONnZgF6ai2pvM0Cn68+MVuj2KB2haL p5jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=NufscNE2yCc/NLDYRAeRYHOgnOY4Ctfk9siox5ZwffA=; b=f4UmgT3PRbDcY9im2JhSo/YlkOALXnTUNtgtg/ddhZfGx43r70zN8LsONffXXT3Don cTucNeysqAa+aKjP+0QdsKTVHVIFiPB0G9DJDz4aDUXxvCOoYSnEaZQtQmdt3nSfaF3J KRSbLA88l7vm8/vEaPB1sYubYMcNGL3I3t7AIwXBrJbXJB5IHkhOICgVZ02SLOMC1cd+ AFOcs7f6gIR26qph/hSOGx9m44ZQMep+hsA7qG5a8xsluDpIEZxbT/4r1XcpYHRuxwbu dySHAi878L5ZHTOmx9MDW9wphQsuHTrqeqYC8VKEHnntyblbHwnj/lK3sBZ3FMQrjxiI lNsQ== 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=alibaba.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f15-20020a1709063f4f00b0088d4e2cc534si1690611ejj.520.2023.02.02.19.51.15; Thu, 02 Feb 2023 19:51:39 -0800 (PST) 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=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231905AbjBCDr3 (ORCPT + 99 others); Thu, 2 Feb 2023 22:47:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57726 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231732AbjBCDr1 (ORCPT ); Thu, 2 Feb 2023 22:47:27 -0500 Received: from out30-111.freemail.mail.aliyun.com (out30-111.freemail.mail.aliyun.com [115.124.30.111]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F6397266A for ; Thu, 2 Feb 2023 19:47:25 -0800 (PST) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R301e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045168;MF=jefflexu@linux.alibaba.com;NM=1;PH=DS;RN=7;SR=0;TI=SMTPD_---0Van6WaK_1675396042; Received: from localhost(mailfrom:jefflexu@linux.alibaba.com fp:SMTPD_---0Van6WaK_1675396042) by smtp.aliyun-inc.com; Fri, 03 Feb 2023 11:47:22 +0800 From: Jingbo Xu To: xiang@kernel.org, chao@kernel.org, linux-erofs@lists.ozlabs.org, zhujia.zj@bytedance.com, houtao1@huawei.com Cc: huyue2@coolpad.com, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] erofs: simplify instantiation of pseudo mount in fscache mode Date: Fri, 3 Feb 2023 11:47:19 +0800 Message-Id: <20230203034720.24619-2-jefflexu@linux.alibaba.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20230203034720.24619-1-jefflexu@linux.alibaba.com> References: <20230203034720.24619-1-jefflexu@linux.alibaba.com> MIME-Version: 1.0 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, USER_IN_DEF_SPF_WL 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: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756780350690821952?= X-GMAIL-MSGID: =?utf-8?q?1756780350690821952?= Introduce a pseudo fs type dedicated to the pseudo mount of fscache mode, so that the logic of real mount won't be messed up with that of pseudo mount, making the implementation of fscache mode more self-contained. Signed-off-by: Jingbo Xu --- fs/erofs/fscache.c | 46 +++++++++++++++++++++++++++------------------ fs/erofs/internal.h | 6 ++++++ fs/erofs/super.c | 35 +++++++--------------------------- 3 files changed, 41 insertions(+), 46 deletions(-) diff --git a/fs/erofs/fscache.c b/fs/erofs/fscache.c index af6ba52bbe8b..2eb42bbc56a4 100644 --- a/fs/erofs/fscache.c +++ b/fs/erofs/fscache.c @@ -6,12 +6,13 @@ #include #include #include +#include #include "internal.h" static DEFINE_MUTEX(erofs_domain_list_lock); static DEFINE_MUTEX(erofs_domain_cookies_lock); static LIST_HEAD(erofs_domain_list); -static struct vfsmount *erofs_pseudo_mnt; +static struct vfsmount *erofs_pseudo_mnt __read_mostly; struct erofs_fscache_request { struct erofs_fscache_request *primary; @@ -471,10 +472,6 @@ static void erofs_fscache_domain_put(struct erofs_domain *domain) mutex_lock(&erofs_domain_list_lock); if (refcount_dec_and_test(&domain->ref)) { list_del(&domain->list); - if (list_empty(&erofs_domain_list)) { - kern_unmount(erofs_pseudo_mnt); - erofs_pseudo_mnt = NULL; - } mutex_unlock(&erofs_domain_list_lock); fscache_relinquish_volume(domain->volume, NULL, false); kfree(domain->domain_id); @@ -526,15 +523,10 @@ static int erofs_fscache_init_domain(struct super_block *sb) } err = erofs_fscache_register_volume(sb); - if (err) - goto out; - - if (!erofs_pseudo_mnt) { - erofs_pseudo_mnt = kern_mount(&erofs_fs_type); - if (IS_ERR(erofs_pseudo_mnt)) { - err = PTR_ERR(erofs_pseudo_mnt); - goto out; - } + if (err) { + kfree(domain->domain_id); + kfree(domain); + return err; } domain->volume = sbi->volume; @@ -542,10 +534,6 @@ static int erofs_fscache_init_domain(struct super_block *sb) list_add(&domain->list, &erofs_domain_list); sbi->domain = domain; return 0; -out: - kfree(domain->domain_id); - kfree(domain); - return err; } static int erofs_fscache_register_domain(struct super_block *sb) @@ -780,3 +768,25 @@ void erofs_fscache_unregister_fs(struct super_block *sb) sbi->volume = NULL; sbi->domain = NULL; } + +static int erofs_fc_anon_get_tree(struct fs_context *fc) +{ + return PTR_ERR_OR_ZERO(init_pseudo(fc, EROFS_SUPER_MAGIC)); +} + +int __init erofs_fscache_init(void) +{ + static struct file_system_type erofs_anon_fs = { + .name = "erofs_anonfs", + .init_fs_context = erofs_fc_anon_get_tree, + .kill_sb = kill_anon_super, + }; + + erofs_pseudo_mnt = kern_mount(&erofs_anon_fs); + return PTR_ERR_OR_ZERO(erofs_pseudo_mnt); +} + +void erofs_fscache_exit(void) +{ + kern_unmount(erofs_pseudo_mnt); +} diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index c3ac6d613eb1..6080e382ed7e 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -634,6 +634,9 @@ static inline int z_erofs_load_lzma_config(struct super_block *sb, /* fscache.c */ #ifdef CONFIG_EROFS_FS_ONDEMAND +int __init erofs_fscache_init(void); +void erofs_fscache_exit(void); + int erofs_fscache_register_fs(struct super_block *sb); void erofs_fscache_unregister_fs(struct super_block *sb); @@ -645,6 +648,9 @@ void erofs_fscache_unregister_cookie(struct erofs_fscache *fscache); extern const struct address_space_operations erofs_fscache_access_aops; extern const struct file_operations erofs_fscache_share_file_fops; #else +static inline int erofs_fscache_init(void) { return 0; } +static inline void erofs_fscache_exit(void) {} + static inline int erofs_fscache_register_fs(struct super_block *sb) { return -EOPNOTSUPP; diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 81aa63f34047..b06d29beed4e 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -712,13 +712,6 @@ static const struct export_operations erofs_export_ops = { .get_parent = erofs_get_parent, }; -static int erofs_fc_fill_pseudo_super(struct super_block *sb, struct fs_context *fc) -{ - static const struct tree_descr empty_descr = {""}; - - return simple_fill_super(sb, EROFS_SUPER_MAGIC, &empty_descr); -} - static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) { struct inode *inode; @@ -822,11 +815,6 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) return 0; } -static int erofs_fc_anon_get_tree(struct fs_context *fc) -{ - return get_tree_nodev(fc, erofs_fc_fill_pseudo_super); -} - static int erofs_fc_get_tree(struct fs_context *fc) { struct erofs_fs_context *ctx = fc->fs_private; @@ -899,20 +887,10 @@ static const struct fs_context_operations erofs_context_ops = { .free = erofs_fc_free, }; -static const struct fs_context_operations erofs_anon_context_ops = { - .get_tree = erofs_fc_anon_get_tree, -}; - static int erofs_init_fs_context(struct fs_context *fc) { struct erofs_fs_context *ctx; - /* pseudo mount for anon inodes */ - if (fc->sb_flags & SB_KERNMOUNT) { - fc->ops = &erofs_anon_context_ops; - return 0; - } - ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); if (!ctx) return -ENOMEM; @@ -940,12 +918,6 @@ static void erofs_kill_sb(struct super_block *sb) WARN_ON(sb->s_magic != EROFS_SUPER_MAGIC); - /* pseudo mount for anon inodes */ - if (sb->s_flags & SB_KERNMOUNT) { - kill_anon_super(sb); - return; - } - if (erofs_is_fscache_mode(sb)) kill_anon_super(sb); else @@ -1021,6 +993,10 @@ static int __init erofs_module_init(void) if (err) goto zip_err; + err = erofs_fscache_init(); + if (err) + goto fscache_err; + err = erofs_init_sysfs(); if (err) goto sysfs_err; @@ -1034,6 +1010,8 @@ static int __init erofs_module_init(void) fs_err: erofs_exit_sysfs(); sysfs_err: + erofs_fscache_exit(); +fscache_err: z_erofs_exit_zip_subsystem(); zip_err: z_erofs_lzma_exit(); @@ -1053,6 +1031,7 @@ static void __exit erofs_module_exit(void) rcu_barrier(); erofs_exit_sysfs(); + erofs_fscache_exit(); z_erofs_exit_zip_subsystem(); z_erofs_lzma_exit(); erofs_exit_shrinker(); From patchwork Fri Feb 3 03:47:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jingbo Xu X-Patchwork-Id: 52283 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp625787wrn; Thu, 2 Feb 2023 19:51:42 -0800 (PST) X-Google-Smtp-Source: AK7set93D3g3l/Mj+kqCgTb8uTZhOiNevY/tbZS2waP/RfzTzQGMwS4PQnFS/bFyH945JdHV9FqM X-Received: by 2002:a17:906:3714:b0:86f:b99c:ac8d with SMTP id d20-20020a170906371400b0086fb99cac8dmr8733400ejc.44.1675396302245; Thu, 02 Feb 2023 19:51:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675396302; cv=none; d=google.com; s=arc-20160816; b=qhlLEny7c0cplxhMW/dZ9YpsvmfjCbTdGOF6YdKqxSPgcBR3jZIOSEYPG8eqRvB2Gg pmSI4zRJEIQ4ZJiyOsz7+W3VcP9bVesjt9qt/k3pP+BE3kj7Mma0sjRuMqelY62QLVv5 PYXKP5Va/m/uqpU8YXSuUaWEnuAzuCmmqDSZ5agJs+cUdJWaJnVp/AA6WA2GnCdeYGFX ww3CM8nxa+0X//4o+eKgvNfXG28Umf9vWAWjtsD11zu9hmhiKWCfh155LRTpvIs+uSAG xlacTOaqhxKQcutFSp8T73XExUxDNNqCSw+v21c2M4Po+0lgdxGg8V7OhCvFr0tsAxyC SW5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=xNcd4YdNTzcpKT8AnJAhpoP8HWE7ILmNcM/PVTj7CCE=; b=jI6f0UkZuaRD4ZMLKQc99qiVlMl9IfSDjgJAQWHWhfeay/7JuHI06NnMV00QYZuyp3 qZWjVdGlhzBrb7IJ1QPb7dtpdjR93HLt3SNwb6KvE9Ay7CmmtY7nj83aUZCfXycJBb/6 7u6LRjNANR6BI9uFBa5vWKNLvv1Bp6B2bU4EVaeEW7aLZYIXUqKCOdsvJ8LbNyzc7x4j mffm/2y0r04S5RscrSW1f6DqEFWPZY3pV4SE0LisI5bVwlvMS95yuR3qixSXpqUss6t1 YmgYocpvtxKqDemvgcHq5WEGJhKEoA3UwQOk4JGHlrxllMPsBhaIl1GwJpjtKwVeKGX3 jEAQ== 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=alibaba.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id vs14-20020a170907138e00b007ae76a4e35fsi1654126ejb.5.2023.02.02.19.51.18; Thu, 02 Feb 2023 19:51:42 -0800 (PST) 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=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231836AbjBCDre (ORCPT + 99 others); Thu, 2 Feb 2023 22:47:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230144AbjBCDr2 (ORCPT ); Thu, 2 Feb 2023 22:47:28 -0500 Received: from out30-110.freemail.mail.aliyun.com (out30-110.freemail.mail.aliyun.com [115.124.30.110]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08511721C5 for ; Thu, 2 Feb 2023 19:47:26 -0800 (PST) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R151e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046059;MF=jefflexu@linux.alibaba.com;NM=1;PH=DS;RN=7;SR=0;TI=SMTPD_---0VamyQoO_1675396042; Received: from localhost(mailfrom:jefflexu@linux.alibaba.com fp:SMTPD_---0VamyQoO_1675396042) by smtp.aliyun-inc.com; Fri, 03 Feb 2023 11:47:23 +0800 From: Jingbo Xu To: xiang@kernel.org, chao@kernel.org, linux-erofs@lists.ozlabs.org, zhujia.zj@bytedance.com, houtao1@huawei.com Cc: huyue2@coolpad.com, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] erofs: simplify the name collision checking in share domain mode Date: Fri, 3 Feb 2023 11:47:20 +0800 Message-Id: <20230203034720.24619-3-jefflexu@linux.alibaba.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20230203034720.24619-1-jefflexu@linux.alibaba.com> References: <20230203034720.24619-1-jefflexu@linux.alibaba.com> MIME-Version: 1.0 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, USER_IN_DEF_SPF_WL 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: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756780353060487286?= X-GMAIL-MSGID: =?utf-8?q?1756780353060487286?= When share domain is enabled, data blobs can be shared among filesystem instances in the same domain for data deduplication, while bootstrap blobs are always dedicated to the corresponding filesystem instance, and have no need to be shared. In the initial implementation of share domain (commit 7d41963759fe ("erofs: Support sharing cookies in the same domain")), bootstrap blobs are also in the share domain, and thus can be referenced by the following filesystem instances. In this case, mounting twice with the same fsid and domain_id will trigger warning in sysfs. Commit 27f2a2dcc626 ("erofs: check the uniqueness of fsid in shared domain in advance") fixes this by introducing the name collision checking. This patch attempts to fix the above issue in another simpler way. Since the bootstrap blobs have no need to be shared, move them out of the share domain, so that one bootstrap blob can not be referenced by other filesystem instances. Attempt to mount twice with the same fsid and domain_id will fail with info of duplicate cookies, which is consistent with the behavior in non-share-domain mode. Signed-off-by: Jingbo Xu --- fs/erofs/fscache.c | 38 +++++++++----------------------------- fs/erofs/internal.h | 9 ++------- fs/erofs/super.c | 2 +- 3 files changed, 12 insertions(+), 37 deletions(-) diff --git a/fs/erofs/fscache.c b/fs/erofs/fscache.c index 2eb42bbc56a4..d47b04dfdc48 100644 --- a/fs/erofs/fscache.c +++ b/fs/erofs/fscache.c @@ -656,8 +656,7 @@ struct erofs_fscache *erofs_fscache_domain_init_cookie(struct super_block *sb, static struct erofs_fscache *erofs_domain_register_cookie(struct super_block *sb, - char *name, - unsigned int flags) + char *name) { struct inode *inode; struct erofs_fscache *ctx; @@ -668,18 +667,12 @@ struct erofs_fscache *erofs_domain_register_cookie(struct super_block *sb, spin_lock(&psb->s_inode_list_lock); list_for_each_entry(inode, &psb->s_inodes, i_sb_list) { ctx = inode->i_private; - if (!ctx || ctx->domain != domain || strcmp(ctx->name, name)) - continue; - if (!(flags & EROFS_REG_COOKIE_NEED_NOEXIST)) { + if (ctx && ctx->domain == domain && !strcmp(ctx->name, name)) { igrab(inode); - } else { - erofs_err(sb, "%s already exists in domain %s", name, - domain->domain_id); - ctx = ERR_PTR(-EEXIST); + spin_unlock(&psb->s_inode_list_lock); + mutex_unlock(&erofs_domain_cookies_lock); + return ctx; } - spin_unlock(&psb->s_inode_list_lock); - mutex_unlock(&erofs_domain_cookies_lock); - return ctx; } spin_unlock(&psb->s_inode_list_lock); ctx = erofs_fscache_domain_init_cookie(sb, name); @@ -688,11 +681,10 @@ struct erofs_fscache *erofs_domain_register_cookie(struct super_block *sb, } struct erofs_fscache *erofs_fscache_register_cookie(struct super_block *sb, - char *name, - unsigned int flags) + char *name) { if (EROFS_SB(sb)->domain_id) - return erofs_domain_register_cookie(sb, name, flags); + return erofs_domain_register_cookie(sb, name); return erofs_fscache_acquire_cookie(sb, sb, name); } @@ -724,7 +716,6 @@ int erofs_fscache_register_fs(struct super_block *sb) int ret; struct erofs_sb_info *sbi = EROFS_SB(sb); struct erofs_fscache *fscache; - unsigned int flags = 0; if (sbi->domain_id) ret = erofs_fscache_register_domain(sb); @@ -733,19 +724,8 @@ int erofs_fscache_register_fs(struct super_block *sb) if (ret) return ret; - /* - * When shared domain is enabled, using NEED_NOEXIST to guarantee - * the primary data blob (aka fsid) is unique in the shared domain. - * - * For non-shared-domain case, fscache_acquire_volume() invoked by - * erofs_fscache_register_volume() has already guaranteed - * the uniqueness of primary data blob. - * - * Acquired domain/volume will be relinquished in kill_sb() on error. - */ - if (sbi->domain_id) - flags |= EROFS_REG_COOKIE_NEED_NOEXIST; - fscache = erofs_fscache_register_cookie(sb, sbi->fsid, flags); + /* acquired domain/volume will be relinquished in kill_sb() on error */ + fscache = erofs_fscache_acquire_cookie(sb, sb, sbi->fsid); if (IS_ERR(fscache)) return PTR_ERR(fscache); diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 6080e382ed7e..a63a9e951fe0 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -629,9 +629,6 @@ static inline int z_erofs_load_lzma_config(struct super_block *sb, } #endif /* !CONFIG_EROFS_FS_ZIP */ -/* flags for erofs_fscache_register_cookie() */ -#define EROFS_REG_COOKIE_NEED_NOEXIST 1 - /* fscache.c */ #ifdef CONFIG_EROFS_FS_ONDEMAND int __init erofs_fscache_init(void); @@ -641,8 +638,7 @@ int erofs_fscache_register_fs(struct super_block *sb); void erofs_fscache_unregister_fs(struct super_block *sb); struct erofs_fscache *erofs_fscache_register_cookie(struct super_block *sb, - char *name, - unsigned int flags); + char *name); void erofs_fscache_unregister_cookie(struct erofs_fscache *fscache); extern const struct address_space_operations erofs_fscache_access_aops; @@ -659,8 +655,7 @@ static inline void erofs_fscache_unregister_fs(struct super_block *sb) {} static inline struct erofs_fscache *erofs_fscache_register_cookie(struct super_block *sb, - char *name, - unsigned int flags) + char *name) { return ERR_PTR(-EOPNOTSUPP); } diff --git a/fs/erofs/super.c b/fs/erofs/super.c index b06d29beed4e..ed4e373b0816 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -245,7 +245,7 @@ static int erofs_init_device(struct erofs_buf *buf, struct super_block *sb, } if (erofs_is_fscache_mode(sb)) { - fscache = erofs_fscache_register_cookie(sb, dif->path, 0); + fscache = erofs_fscache_register_cookie(sb, dif->path); if (IS_ERR(fscache)) return PTR_ERR(fscache); dif->fscache = fscache;