Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp3366497ioa; Tue, 26 Apr 2022 02:04:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzl/Cin1eAAq0ipKxJbDKDIAVphMKXQfpwNjCv+tmcGQt2DAGbkbtawEwGjMvqzmVBdKBtU X-Received: by 2002:a17:902:ccc9:b0:15b:c265:b7a0 with SMTP id z9-20020a170902ccc900b0015bc265b7a0mr21579809ple.107.1650963844889; Tue, 26 Apr 2022 02:04:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650963844; cv=none; d=google.com; s=arc-20160816; b=Iu7tAxXSZHDzS725Q4Rblv+dlJa00zvRudB3ZXBcq3KtBIQn6Wm/sCoKfo0xYwSuCt EPDrH5kVRz67M4IriwsKVtCQwwTamoe/97Yh/D/9VJbDb/lDkDeX+j1ryfaNl0HHfuiv wDTIYoOrMow/JAXd61wjvWIWXPSg57JEqbNekbUrWhTX5TuN+aEFzsJAASFW7EXCBC+y z4kMDkxa3c24ud0Hk7mPLrNoDsZpVWh8b8ZEsYByL9iqb53QvoE9Yp2NkpnPONuL3vqT 9R0YYNxjW+fKCIbkwtaDqCU4TF9qv/6SZdAYCv5fEGUQSi10LKtofydbYnMe7WZg0mV2 rJbg== 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=dakhDTvEDOi+2dXXenivVxSbCpJv1cr+GXoy77QskVs=; b=nbUgn/cfi3xDvkq3hK+VcnXgFvh7YUL+V6U1+nLWXJJ53/LDaYIcd1+PySHG0Qqu5g I3rPL+6UigrW5eTe3CBg0LfOXYcYNB9f253YSe32z0wHWfIZJF6XvGr0TEApa579q59X nhVIsbtdjSpQNuEIaR9nlRUDa39LbrPzY7em5AkwXyMxDUKaabRdOWSxvSeIqUWVBN+o V6r1KMkE/4Mn364zJh1sdSSVydHIYPcxtEoAH2Xbw1sLHi3cv2ge2cG1CuJov71MJUxz DZOcL5mfsZX73XmNeGCy3vrc18Gwyp7lQnmlMhvXlQc+6xBlrh54sjTwTZ9jIOWrJpYK WvPQ== 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n6-20020a170902d2c600b0015cb564e4d5si11187566plc.242.2022.04.26.02.03.50; Tue, 26 Apr 2022 02:04:04 -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=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241872AbiDYM0u (ORCPT + 99 others); Mon, 25 Apr 2022 08:26:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241778AbiDYMZV (ORCPT ); Mon, 25 Apr 2022 08:25:21 -0400 Received: from out30-57.freemail.mail.aliyun.com (out30-57.freemail.mail.aliyun.com [115.124.30.57]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CD18260D91; Mon, 25 Apr 2022 05:22:15 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R761e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04423;MF=jefflexu@linux.alibaba.com;NM=1;PH=DS;RN=20;SR=0;TI=SMTPD_---0VBDlJJf_1650889330; Received: from localhost(mailfrom:jefflexu@linux.alibaba.com fp:SMTPD_---0VBDlJJf_1650889330) by smtp.aliyun-inc.com(127.0.0.1); Mon, 25 Apr 2022 20:22:11 +0800 From: Jeffle Xu To: dhowells@redhat.com, linux-cachefs@redhat.com, xiang@kernel.org, chao@kernel.org, linux-erofs@lists.ozlabs.org Cc: torvalds@linux-foundation.org, gregkh@linuxfoundation.org, willy@infradead.org, linux-fsdevel@vger.kernel.org, joseph.qi@linux.alibaba.com, bo.liu@linux.alibaba.com, tao.peng@linux.alibaba.com, gerry@linux.alibaba.com, eguan@linux.alibaba.com, linux-kernel@vger.kernel.org, luodaowen.backend@bytedance.com, tianzichen@kuaishou.com, fannaihao@baidu.com, zhangjiachen.jaycee@bytedance.com, zhujia.zj@bytedance.com Subject: [PATCH v10 16/21] erofs: register fscache context for extra data blobs Date: Mon, 25 Apr 2022 20:21:38 +0800 Message-Id: <20220425122143.56815-17-jefflexu@linux.alibaba.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220425122143.56815-1-jefflexu@linux.alibaba.com> References: <20220425122143.56815-1-jefflexu@linux.alibaba.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,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 Similar to the multi device mode, erofs could be mounted from one primary data blob (mandatory) and multiple extra data blobs (optional). Register fscache context for each extra data blob. Signed-off-by: Jeffle Xu Reviewed-by: Gao Xiang --- fs/erofs/data.c | 3 +++ fs/erofs/internal.h | 2 ++ fs/erofs/super.c | 8 +++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/fs/erofs/data.c b/fs/erofs/data.c index bc22642358ec..14b64d960541 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -199,6 +199,7 @@ int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) map->m_bdev = sb->s_bdev; map->m_daxdev = EROFS_SB(sb)->dax_dev; map->m_dax_part_off = EROFS_SB(sb)->dax_part_off; + map->m_fscache = EROFS_SB(sb)->s_fscache; if (map->m_deviceid) { down_read(&devs->rwsem); @@ -210,6 +211,7 @@ int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) map->m_bdev = dif->bdev; map->m_daxdev = dif->dax_dev; map->m_dax_part_off = dif->dax_part_off; + map->m_fscache = dif->fscache; up_read(&devs->rwsem); } else if (devs->extra_devices) { down_read(&devs->rwsem); @@ -227,6 +229,7 @@ int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) map->m_bdev = dif->bdev; map->m_daxdev = dif->dax_dev; map->m_dax_part_off = dif->dax_part_off; + map->m_fscache = dif->fscache; break; } } diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 386658416159..fa488af8dfcf 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -49,6 +49,7 @@ typedef u32 erofs_blk_t; struct erofs_device_info { char *path; + struct erofs_fscache *fscache; struct block_device *bdev; struct dax_device *dax_dev; u64 dax_part_off; @@ -482,6 +483,7 @@ static inline int z_erofs_map_blocks_iter(struct inode *inode, #endif /* !CONFIG_EROFS_FS_ZIP */ struct erofs_map_dev { + struct erofs_fscache *m_fscache; struct block_device *m_bdev; struct dax_device *m_daxdev; u64 m_dax_part_off; diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 61dc900295f9..c6755bcae4a6 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -259,7 +259,12 @@ static int erofs_init_devices(struct super_block *sb, } dis = ptr + erofs_blkoff(pos); - if (!erofs_is_fscache_mode(sb)) { + if (erofs_is_fscache_mode(sb)) { + err = erofs_fscache_register_cookie(sb, &dif->fscache, + dif->path, false); + if (err) + break; + } else { bdev = blkdev_get_by_path(dif->path, FMODE_READ | FMODE_EXCL, sb->s_type); @@ -710,6 +715,7 @@ static int erofs_release_device_info(int id, void *ptr, void *data) fs_put_dax(dif->dax_dev); if (dif->bdev) blkdev_put(dif->bdev, FMODE_READ | FMODE_EXCL); + erofs_fscache_unregister_cookie(&dif->fscache); kfree(dif->path); kfree(dif); return 0; -- 2.27.0