Received: by 2002:a05:6a10:83d0:0:0:0:0 with SMTP id o16csp221548pxh; Thu, 7 Apr 2022 19:40:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwtPf9vyj2wSpAW8CH1pt0ddEVgrf9Uqa2+2RD1jjrr/CNM0u2g041EL267TLJf4BRzdt3u X-Received: by 2002:a17:902:d384:b0:156:b53d:949d with SMTP id e4-20020a170902d38400b00156b53d949dmr16757681pld.134.1649385599857; Thu, 07 Apr 2022 19:39:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649385599; cv=none; d=google.com; s=arc-20160816; b=eK7ucJwCfKPTfrRmWZH4fmVC0CxCNbUkL62jzV+TfmWjaSbE22n4MmfKsEBh9ToMdV LJUrKhV6h+tJtQA2FEs/j+b8mYG7Xl6U9D054BtLR6gbY61k4KfWGoPxTwMUgyYwm6gp d08W8unQGLGVDSYURzaLcmBwMgYRLzE4OcTXcWnIl+hP8Q6ZzCYEzbZ+GH449nPlIGmK X33tea2YqVMS01TW4nUJiK1u0VrTLpvg/FcIbmbJd/wddHnaeZP+IhCuWKtTS+wOZwV2 6UZgO5JATl6h08XcVB48jQZ54303XKs5v93Q+yiQ0rj2kHCNbi1rupt9HYSr00zNjXXo g4WA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:to:content-language:subject:user-agent:mime-version:date :message-id; bh=jGB2x0qpVnNwZBgcQL0/jeZ5zwgWQFIFrxutKQN7RP8=; b=lXeQvb0Sk+oIPcDTqUVv5hrTL5MAtc3bM65/5m28Fceqz3NmcViZWMTPY+tayihTPM ug4ENWYKToGNwAM5Yk2rV3Oy/sKnHtXSPsXUXc6Ny9jK4kAs9Oge6AsH0l1LJQHNNVvd g85MO4QJitUFoAWIEo8Sgd+1Q1bLX94ehu5KmrbkWxBfdyUfDqziEUxR8ArqRboHM1+D 8D0VoKfdlaki5kQCKmIqL4nlfMihSGGditKzXH6mbGhhQmlSqv7WTdTRVjl1wUdxI/Aj Or1CmbHGsHMHxpCsaof0jOzM/c77wYnBv/R6Vynerrwdl1W+h4483Tnp2c1im8OlukF1 xbOw== 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:18 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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id g1-20020a63e601000000b003816043f15asi14361pgh.847.2022.04.07.19.39.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Apr 2022 19:39:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 40C5C23CC70; Thu, 7 Apr 2022 19:12:10 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233687AbiDHCOF (ORCPT + 99 others); Thu, 7 Apr 2022 22:14:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233672AbiDHCN7 (ORCPT ); Thu, 7 Apr 2022 22:13:59 -0400 Received: from out199-6.us.a.mail.aliyun.com (out199-6.us.a.mail.aliyun.com [47.90.199.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 916ED23B3C0; Thu, 7 Apr 2022 19:11:56 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R211e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04395;MF=jefflexu@linux.alibaba.com;NM=1;PH=DS;RN=18;SR=0;TI=SMTPD_---0V9TMXhB_1649383908; Received: from 30.225.24.70(mailfrom:jefflexu@linux.alibaba.com fp:SMTPD_---0V9TMXhB_1649383908) by smtp.aliyun-inc.com(127.0.0.1); Fri, 08 Apr 2022 10:11:49 +0800 Message-ID: Date: Fri, 8 Apr 2022 10:11:47 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH v8 15/20] erofs: register fscache context for extra data blobs Content-Language: en-US To: dhowells@redhat.com, linux-cachefs@redhat.com, xiang@kernel.org, chao@kernel.org, linux-erofs@lists.ozlabs.org, 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 References: <20220406075612.60298-1-jefflexu@linux.alibaba.com> <20220406075612.60298-16-jefflexu@linux.alibaba.com> From: JeffleXu In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A, RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=unavailable 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 On 4/7/22 10:15 PM, Gao Xiang wrote: > On Wed, Apr 06, 2022 at 03:56:07PM +0800, Jeffle Xu wrote: >> 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 >> --- >> fs/erofs/data.c | 3 +++ >> fs/erofs/internal.h | 2 ++ >> fs/erofs/super.c | 25 +++++++++++++++++-------- >> 3 files changed, 22 insertions(+), 8 deletions(-) >> >> 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 eb37b33bce37..90f7d6286a4f 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 9498b899b73b..8c7181cd37e6 100644 >> --- a/fs/erofs/super.c >> +++ b/fs/erofs/super.c >> @@ -259,15 +259,23 @@ static int erofs_init_devices(struct super_block *sb, >> } >> dis = ptr + erofs_blkoff(pos); >> >> - bdev = blkdev_get_by_path(dif->path, >> - FMODE_READ | FMODE_EXCL, >> - sb->s_type); >> - if (IS_ERR(bdev)) { >> - err = PTR_ERR(bdev); >> - break; >> + 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); >> + if (IS_ERR(bdev)) { >> + err = PTR_ERR(bdev); >> + break; >> + } >> + dif->bdev = bdev; >> + dif->dax_dev = fs_dax_get_by_bdev(bdev, &dif->dax_part_off); > > Overly long line, please help split into 2 lines if possible. > Will be fixed in the next version. -- Thanks, Jeffle