Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp1392542rwb; Thu, 8 Dec 2022 10:02:58 -0800 (PST) X-Google-Smtp-Source: AA0mqf6hHnfD68RWXWVl2xTPRK/0rsVcgWRaLdael7FQ6ql9n1xmZ0tM5JqTyT6eohW1LKEffMKP X-Received: by 2002:a17:906:7f16:b0:7c0:f2cf:8e09 with SMTP id d22-20020a1709067f1600b007c0f2cf8e09mr13118479ejr.257.1670522577746; Thu, 08 Dec 2022 10:02:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670522577; cv=none; d=google.com; s=arc-20160816; b=UifsfIVdI3CnxtA4wWu8vDcmqQntb4XJk9dI6X6x9xi/fKdFWmpZve/jn8jOp6L+p9 tPt5uTRR42+KEdWqM0h25Tzzvy1RiW6Ua+DPoqodhUkjtqN3D9LiE3+ZdEeHm8zNmp4s 4k1ogNZdVh4h217KkydqemZ+oTfNMiCN2rgNht2502KX/6jJQDjTJJZhgUTYJ4LtqFLw LPLW2gv43klF1+1z7bavfm6Et1o47pNl0CF+BvfrkpGDi9YbepQMli+DSIpbxwJygM8b spZw6ZD6apF17+GjhfqOjSDCEGZNGVoJJHCtMS2i8Yad7cm6UrnqInTd2yQl/3ZqEU6q giBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=uZYSg+hVaTx2jNrt03k0iNmlHJoda16uqdaj7wlGZ3E=; b=lgpgBFJgT4YaIRH8pX+oGPA1AKNHp5FZKb/36kpbzBKfB1fZE9YYhlob5pbHFg0wTC f0QNlmByCBE8j6ZaE78V+mt1oz08B3QGIbqarF/uQXo8WrzA12XBMVkXriWJ+RyksO9e m6Ye4pGN2pU5BiniRn2Egh1FEQABAjRJWe2Z7eDR6IAuRlBKe6Xu0ljt0FzlYo5TmGD3 iJPVydTI/Q2VU9qEp9506LBxGZHDz8W6LEgqvt5EVtk8Ktmc3ktHMlIlzHxyTgJqW9TC IUqCCFcVA+gEbBu+xHXvWz2xVd6UthXBTDpHJcd64KNMWAkdDaQtLHHfpyJtxkgFBAIa hs9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Iq8KU0Wt; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id du1-20020a17090772c100b007aefdb4fc1esi15329833ejc.846.2022.12.08.10.02.39; Thu, 08 Dec 2022 10:02:57 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Iq8KU0Wt; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229886AbiLHRaA (ORCPT + 72 others); Thu, 8 Dec 2022 12:30:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229593AbiLHR36 (ORCPT ); Thu, 8 Dec 2022 12:29:58 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B17AE9857F for ; Thu, 8 Dec 2022 09:29:57 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 4DBCD60EA0 for ; Thu, 8 Dec 2022 17:29:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D757C433D2; Thu, 8 Dec 2022 17:29:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1670520596; bh=qSA198bplUrIbdYGyPLtvL7kzzxiHPcIk4XswMN9Yzw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Iq8KU0WtPwZOWPLaGlHsBYp1bdGrxduZAK3WjPnKrnWMq2VsZfh7HHk2AephyDpYd EjsN1X+EKfJL+mEswxNpxPclz5TOg9x18ub0geFbEHOQgBsojIK6pIPylDjT5AAhcN NrJ65WHYNStknY4ZgXmWgkAT76w5i1LPyIpjanTudixDXJvUa49uIS4zXQ7mHrG0Vk uN1msctRq5OI8/lAqWTT+wuNjb/1qCM3LFGVZduWqWZlN/4eZIBXqQ9JwrtwsMmVLC RWwA0PGHKl3XX6oZfMv3zmoDycgUUtTyKOuVoOHuqp1q1H//9ibvqYtsEvOCHJLB7o /c8zwNFTF2Waw== Date: Thu, 8 Dec 2022 09:29:54 -0800 From: Jaegeuk Kim To: Chao Yu Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Subject: Re: [f2fs-dev] [PATCH 1/6] f2fs: specify extent cache for read explicitly Message-ID: References: <20221205185433.3479699-1-jaegeuk@kernel.org> <8ffb43dd-3887-aa56-6f0a-1fb6ff0e191e@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8ffb43dd-3887-aa56-6f0a-1fb6ff0e191e@kernel.org> X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS 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 On 12/08, Chao Yu wrote: > On 2022/12/6 2:54, Jaegeuk Kim wrote: > > Let's descrbie it's read extent cache. > > > > Signed-off-by: Jaegeuk Kim > > --- > > fs/f2fs/extent_cache.c | 4 ++-- > > fs/f2fs/f2fs.h | 10 +++++----- > > fs/f2fs/inode.c | 2 +- > > fs/f2fs/node.c | 2 +- > > fs/f2fs/node.h | 2 +- > > fs/f2fs/segment.c | 4 ++-- > > fs/f2fs/super.c | 16 ++++++++-------- > > 7 files changed, 20 insertions(+), 20 deletions(-) > > > > diff --git a/fs/f2fs/extent_cache.c b/fs/f2fs/extent_cache.c > > index 932c070173b9..8cd87aee0292 100644 > > --- a/fs/f2fs/extent_cache.c > > +++ b/fs/f2fs/extent_cache.c > > @@ -383,7 +383,7 @@ static void __f2fs_init_extent_tree(struct inode *inode, struct page *ipage) > > if (!i_ext || !i_ext->len) > > return; > > - get_extent_info(&ei, i_ext); > > + get_read_extent_info(&ei, i_ext); > > write_lock(&et->lock); > > if (atomic_read(&et->node_cnt)) > > @@ -710,7 +710,7 @@ unsigned int f2fs_shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink) > > unsigned int node_cnt = 0, tree_cnt = 0; > > int remained; > > - if (!test_opt(sbi, EXTENT_CACHE)) > > + if (!test_opt(sbi, READ_EXTENT_CACHE)) > > return 0; > > if (!atomic_read(&sbi->total_zombie_tree)) > > diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h > > index eb8c27c4e5fc..1c39f8145b61 100644 > > --- a/fs/f2fs/f2fs.h > > +++ b/fs/f2fs/f2fs.h > > @@ -92,7 +92,7 @@ extern const char *f2fs_fault_name[FAULT_MAX]; > > #define F2FS_MOUNT_FLUSH_MERGE 0x00000400 > > #define F2FS_MOUNT_NOBARRIER 0x00000800 > > #define F2FS_MOUNT_FASTBOOT 0x00001000 > > -#define F2FS_MOUNT_EXTENT_CACHE 0x00002000 > > +#define F2FS_MOUNT_READ_EXTENT_CACHE 0x00002000 > > #define F2FS_MOUNT_DATA_FLUSH 0x00008000 > > #define F2FS_MOUNT_FAULT_INJECTION 0x00010000 > > #define F2FS_MOUNT_USRQUOTA 0x00080000 > > @@ -600,7 +600,7 @@ enum { > > #define F2FS_MIN_EXTENT_LEN 64 /* minimum extent length */ > > /* number of extent info in extent cache we try to shrink */ > > -#define EXTENT_CACHE_SHRINK_NUMBER 128 > > +#define READ_EXTENT_CACHE_SHRINK_NUMBER 128 > > #define RECOVERY_MAX_RA_BLOCKS BIO_MAX_VECS > > #define RECOVERY_MIN_RA_BLOCKS 1 > > @@ -830,7 +830,7 @@ struct f2fs_inode_info { > > loff_t original_i_size; /* original i_size before atomic write */ > > }; > > -static inline void get_extent_info(struct extent_info *ext, > > +static inline void get_read_extent_info(struct extent_info *ext, > > struct f2fs_extent *i_ext) > > { > > ext->fofs = le32_to_cpu(i_ext->fofs); > > @@ -838,7 +838,7 @@ static inline void get_extent_info(struct extent_info *ext, > > ext->len = le32_to_cpu(i_ext->len); > > } > > -static inline void set_raw_extent(struct extent_info *ext, > > +static inline void set_raw_read_extent(struct extent_info *ext, > > struct f2fs_extent *i_ext) > > { > > i_ext->fofs = cpu_to_le32(ext->fofs); > > @@ -4407,7 +4407,7 @@ static inline bool f2fs_may_extent_tree(struct inode *inode) > > { > > struct f2fs_sb_info *sbi = F2FS_I_SB(inode); > > - if (!test_opt(sbi, EXTENT_CACHE) || > > + if (!test_opt(sbi, READ_EXTENT_CACHE) || > > is_inode_flag_set(inode, FI_NO_EXTENT) || > > (is_inode_flag_set(inode, FI_COMPRESSED_FILE) && > > !f2fs_sb_has_readonly(sbi))) > > diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c > > index 577f109b4e1d..2c705c60019b 100644 > > --- a/fs/f2fs/inode.c > > +++ b/fs/f2fs/inode.c > > @@ -629,7 +629,7 @@ void f2fs_update_inode(struct inode *inode, struct page *node_page) > > if (et) { > > read_lock(&et->lock); > > - set_raw_extent(&et->largest, &ri->i_ext); > > + set_raw_read_extent(&et->largest, &ri->i_ext); > > read_unlock(&et->lock); > > } else { > > memset(&ri->i_ext, 0, sizeof(ri->i_ext)); > > diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c > > index b9ee5a1176a0..84b147966080 100644 > > --- a/fs/f2fs/node.c > > +++ b/fs/f2fs/node.c > > @@ -85,7 +85,7 @@ bool f2fs_available_free_memory(struct f2fs_sb_info *sbi, int type) > > sizeof(struct ino_entry); > > mem_size >>= PAGE_SHIFT; > > res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 1); > > - } else if (type == EXTENT_CACHE) { > > + } else if (type == READ_EXTENT_CACHE) { > > mem_size = (atomic_read(&sbi->total_ext_tree) * > > sizeof(struct extent_tree) + > > atomic_read(&sbi->total_ext_node) * > > diff --git a/fs/f2fs/node.h b/fs/f2fs/node.h > > index 3c09cae058b0..0aa48704c77a 100644 > > --- a/fs/f2fs/node.h > > +++ b/fs/f2fs/node.h > > @@ -146,7 +146,7 @@ enum mem_type { > > NAT_ENTRIES, /* indicates the cached nat entry */ > > DIRTY_DENTS, /* indicates dirty dentry pages */ > > INO_ENTRIES, /* indicates inode entries */ > > - EXTENT_CACHE, /* indicates extent cache */ > > + READ_EXTENT_CACHE, /* indicates read extent cache */ > > DISCARD_CACHE, /* indicates memory of cached discard cmds */ > > COMPRESS_PAGE, /* indicates memory of cached compressed pages */ > > BASE_CHECK, /* check kernel status */ > > diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c > > index 9486ca49ecb1..51de358bc452 100644 > > --- a/fs/f2fs/segment.c > > +++ b/fs/f2fs/segment.c > > @@ -449,8 +449,8 @@ void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi, bool from_bg) > > return; > > /* try to shrink extent cache when there is no enough memory */ > > - if (!f2fs_available_free_memory(sbi, EXTENT_CACHE)) > > - f2fs_shrink_extent_tree(sbi, EXTENT_CACHE_SHRINK_NUMBER); > > + if (!f2fs_available_free_memory(sbi, READ_EXTENT_CACHE)) > > + f2fs_shrink_extent_tree(sbi, READ_EXTENT_CACHE_SHRINK_NUMBER); > > /* check the # of cached NAT entries */ > > if (!f2fs_available_free_memory(sbi, NAT_ENTRIES)) > > diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c > > index 79bf1faf4161..10bd03bbefec 100644 > > --- a/fs/f2fs/super.c > > +++ b/fs/f2fs/super.c > > @@ -814,10 +814,10 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount) > > set_opt(sbi, FASTBOOT); > > break; > > case Opt_extent_cache: > > - set_opt(sbi, EXTENT_CACHE); > > + set_opt(sbi, READ_EXTENT_CACHE); > > break; > > case Opt_noextent_cache: > > - clear_opt(sbi, EXTENT_CACHE); > > + clear_opt(sbi, READ_EXTENT_CACHE); > > break; > > case Opt_noinline_data: > > clear_opt(sbi, INLINE_DATA); > > @@ -1954,10 +1954,10 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root) > > seq_puts(seq, ",barrier"); > > if (test_opt(sbi, FASTBOOT)) > > seq_puts(seq, ",fastboot"); > > - if (test_opt(sbi, EXTENT_CACHE)) > > - seq_puts(seq, ",extent_cache"); > > + if (test_opt(sbi, READ_EXTENT_CACHE)) > > + seq_puts(seq, ",read_extent_cache"); > > How about keeping consistent w/ description of f2fs.rst? This doesn't change the mount options, but do show the exact name which would be better to say what's going on. > > > else > > - seq_puts(seq, ",noextent_cache"); > > + seq_puts(seq, ",no_read_extent_cache"); > > Ditto, > > Thanks, > > > if (test_opt(sbi, DATA_FLUSH)) > > seq_puts(seq, ",data_flush"); > > @@ -2076,7 +2076,7 @@ static void default_options(struct f2fs_sb_info *sbi) > > set_opt(sbi, INLINE_XATTR); > > set_opt(sbi, INLINE_DATA); > > set_opt(sbi, INLINE_DENTRY); > > - set_opt(sbi, EXTENT_CACHE); > > + set_opt(sbi, READ_EXTENT_CACHE); > > set_opt(sbi, NOHEAP); > > clear_opt(sbi, DISABLE_CHECKPOINT); > > set_opt(sbi, MERGE_CHECKPOINT); > > @@ -2218,7 +2218,7 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data) > > bool need_restart_ckpt = false, need_stop_ckpt = false; > > bool need_restart_flush = false, need_stop_flush = false; > > bool need_restart_discard = false, need_stop_discard = false; > > - bool no_extent_cache = !test_opt(sbi, EXTENT_CACHE); > > + bool no_read_extent_cache = !test_opt(sbi, READ_EXTENT_CACHE); > > bool enable_checkpoint = !test_opt(sbi, DISABLE_CHECKPOINT); > > bool no_io_align = !F2FS_IO_ALIGNED(sbi); > > bool no_atgc = !test_opt(sbi, ATGC); > > @@ -2308,7 +2308,7 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data) > > } > > /* disallow enable/disable extent_cache dynamically */ > > - if (no_extent_cache == !!test_opt(sbi, EXTENT_CACHE)) { > > + if (no_read_extent_cache == !!test_opt(sbi, READ_EXTENT_CACHE)) { > > err = -EINVAL; > > f2fs_warn(sbi, "switch extent_cache option is not allowed"); > > goto restore_opts;