From patchwork Wed Jan 11 08:31:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jingbo Xu X-Patchwork-Id: 41819 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp3200378wrt; Wed, 11 Jan 2023 00:40:12 -0800 (PST) X-Google-Smtp-Source: AMrXdXvbgCAgrvhE6Yytek4YAOnGFs3RkEjFH/5dgRlUNb02XIj1/2cMufZIMYjd4coW6p59ii5d X-Received: by 2002:a17:906:27c5:b0:7c0:c220:a33d with SMTP id k5-20020a17090627c500b007c0c220a33dmr70931233ejc.9.1673426411992; Wed, 11 Jan 2023 00:40:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673426411; cv=none; d=google.com; s=arc-20160816; b=Dz2DStS0sYPXChmi/wypOAj5TbE68e2EPNH9WogxepjabGajr6WHbJGcep+aRQq1rs TDP6H43LCR0oIOPylF/BcZeE8SkBOiSL6vB7akZlNzBpvOCkG/AtZnNmYTwPFzzSJEc0 rd7muO3mTe2Wa45wi0fRxH6B+VL7pGf6MHHdukHBJNP6EzZYoCS3o+klH2RpdsO4uxAE QXvIHVOl+Y4NfujHGJdsDzqkFNXVewdgR9+sFM++PJfsJS9Yb9tFzl/1kfcwLl9AldBY +aD/gvadco7OI4vG55n9n/ghxYtbFLPZHGbNUeFotPJemP+dvB9fkVDYff4VkEMka0rR MAYw== 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=EhdxxlpYwtjX8jwA7cAhNWmBzIgaulcEQjTbzizakHA=; b=HhNEWOjBSLMEXhpWBOFfUE7Tq9kbrxAcE1RK53hhkDXmfHt4MhKKNtKCQPx5W34nSe Jxgqbuu5r0g+Ep1EIKVt4nHGe4DBEnd6zDKEFCF1Zjc9it3hwAdEr01n6nfPSaCzdhyT goTANX5epwDeq8GJ4Wk0wsZ3RFTEM2/Gz5GfREgLLLIZpwFAvTxiHvGBhgQJn365YvMG Wd3LSvlvP7Vabqxy0ktoBcJlI9R9ZQ9rFB+cOl9p8XnzoVgaFhm186sotRlzWs/ZHY8Z TvzLkJBec7jffFM2tHlCdWEsdIJmHGokz+bTMk0lM6SwvW+OQ+h4LqPocP4kjDc5m7t/ 4WCw== 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 di15-20020a170906730f00b007ae4ed48290si15373575ejc.279.2023.01.11.00.39.47; Wed, 11 Jan 2023 00:40:11 -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 S235666AbjAKIcQ (ORCPT + 99 others); Wed, 11 Jan 2023 03:32:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235731AbjAKIcJ (ORCPT ); Wed, 11 Jan 2023 03:32:09 -0500 Received: from out30-6.freemail.mail.aliyun.com (out30-6.freemail.mail.aliyun.com [115.124.30.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 028EFA188; Wed, 11 Jan 2023 00:32:05 -0800 (PST) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R231e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046049;MF=jefflexu@linux.alibaba.com;NM=1;PH=DS;RN=6;SR=0;TI=SMTPD_---0VZMeLov_1673425919; Received: from localhost(mailfrom:jefflexu@linux.alibaba.com fp:SMTPD_---0VZMeLov_1673425919) by smtp.aliyun-inc.com; Wed, 11 Jan 2023 16:32:00 +0800 From: Jingbo Xu To: xiang@kernel.org, chao@kernel.org, linux-erofs@lists.ozlabs.org Cc: huyue2@coolpad.com, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v2 1/7] erofs: remove unused device mapping in the meta routine Date: Wed, 11 Jan 2023 16:31:52 +0800 Message-Id: <20230111083158.23462-2-jefflexu@linux.alibaba.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20230111083158.23462-1-jefflexu@linux.alibaba.com> References: <20230111083158.23462-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,RCVD_IN_MSPIKE_H2,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?1754714773213436613?= X-GMAIL-MSGID: =?utf-8?q?1754714773213436613?= Currently there're two anonymous inodes (inode and anon_inode in struct erofs_fscache) may be used for each blob. The former is only for bootstrap and used as the address_space of page cache, while the latter is used for both bootstrap and data blobs when share domain mode enabled and behaves as a sentinel in the shared domain. In prep for the following support for page cache sharing, following patch will unify these two anonymous inodes. That is, the unified anonymous inode not only acts as the address_space of page cache, but also a sentinel in share domain mode. However the current meta routine can't work if above change applied. Current meta routine will make a device mapping, and superblock of the filesystem is required to do the device mapping. Currently the superblock is derived from the input meta folio, which is reasonable since the anonymous inode (used for the address_space of page cache) is always allocated from the filesystem's sb. However after anonymous inodes are unified, that is no longer always true. For example, in share domain mode, the unified anonymous inode will be allocated from pseudo mnt, and the superblock derived from the folio is actually a pseudo sb, which can't be used for the device mapping at all. As for the meta routine itself, currently metadata is always on bootstrap, which means device mapping is not needed so far. After removing the redundant device mapping logic, we can derive the required fscache_ctx from anonymous inode's i_private. Signed-off-by: Jingbo Xu --- fs/erofs/fscache.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/fs/erofs/fscache.c b/fs/erofs/fscache.c index 014e20962376..03de4dc99302 100644 --- a/fs/erofs/fscache.c +++ b/fs/erofs/fscache.c @@ -164,18 +164,8 @@ static int erofs_fscache_read_folios_async(struct fscache_cookie *cookie, static int erofs_fscache_meta_read_folio(struct file *data, struct folio *folio) { int ret; - struct super_block *sb = folio_mapping(folio)->host->i_sb; + struct erofs_fscache *ctx = folio_mapping(folio)->host->i_private; struct erofs_fscache_request *req; - struct erofs_map_dev mdev = { - .m_deviceid = 0, - .m_pa = folio_pos(folio), - }; - - ret = erofs_map_dev(sb, &mdev); - if (ret) { - folio_unlock(folio); - return ret; - } req = erofs_fscache_req_alloc(folio_mapping(folio), folio_pos(folio), folio_size(folio)); @@ -184,8 +174,8 @@ static int erofs_fscache_meta_read_folio(struct file *data, struct folio *folio) return PTR_ERR(req); } - ret = erofs_fscache_read_folios_async(mdev.m_fscache->cookie, - req, mdev.m_pa, folio_size(folio)); + ret = erofs_fscache_read_folios_async(ctx->cookie, req, + folio_pos(folio), folio_size(folio)); if (ret) req->error = ret; @@ -469,6 +459,7 @@ struct erofs_fscache *erofs_fscache_acquire_cookie(struct super_block *sb, inode->i_size = OFFSET_MAX; inode->i_mapping->a_ops = &erofs_fscache_meta_aops; mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS); + inode->i_private = ctx; ctx->inode = inode; }