[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAKYAXd-ri1KJ_kmPLJWeCh5A0Sf0OLKtmbvq5EEFJ=2=e51c6g@mail.gmail.com>
Date: Sun, 18 Jan 2026 14:23:52 +0900
From: Namjae Jeon <linkinjeon@...nel.org>
To: Chi Zhiling <chizhiling@....com>
Cc: linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
Sungjong Seo <sj1557.seo@...sung.com>, Yuezhang Mo <yuezhang.mo@...y.com>,
Chi Zhiling <chizhiling@...inos.cn>
Subject: Re: [PATCH v3 00/13] Enable multi-cluster fetching for exfat_get_block.
On Wed, Jan 14, 2026 at 9:13 PM Chi Zhiling <chizhiling@....com> wrote:
>
> From: Chi Zhiling <chizhiling@...inos.cn>
>
> This patch series significantly improves exFAT read performance
> by adding multi-cluster mapping support.
> The changes reduce get_block calls during sequential reads,
> particularly benefiting small cluster sizes.
>
> - Extends exfat_get_cluster() and exfat_map_cluster() to handle multiple contiguous clusters
> - Adds buffer head caching for FAT table reads
>
> Performance results show ~10% improvement for 512-byte clusters (454->511 MB/s)
> and reduced get_block overhead from 10.8% to 0.02% for NO_FAT_CHAIN files.
>
> All criticism and suggestions are welcome :)
Applied them to #dev with Yuezhang reviewed-by tag.
Thanks!
>
>
> Changes in v3:
> - fix overflow in exfat_get_block, only patch 10 and 13 changed
> - add review tag for all patches except patch 10 and 13
>
> Changes in v2:
> - Cache the last dis-continuous cluster
> - Continue collect clusters after cache hit
> - Some cleanup.
>
> V2:
> https://lore.kernel.org/linux-fsdevel/20260108074929.356683-1-chizhiling@163.com/T/#u
> V1:
> https://lore.kernel.org/linux-fsdevel/20251226094440.455563-1-chizhiling@163.com/T/#u
> rfc:
> https://lore.kernel.org/linux-fsdevel/20251118082208.1034186-1-chizhiling@163.com/T/#u
>
> Chi Zhiling (13):
> exfat: add cache option for __exfat_ent_get
> exfat: support reuse buffer head for exfat_ent_get
> exfat: improve exfat_count_num_clusters
> exfat: improve exfat_find_last_cluster
> exfat: remove the check for infinite cluster chain loop
> exfat: remove the unreachable warning for cache miss cases
> exfat: reduce the number of parameters for exfat_get_cluster()
> exfat: reuse cache to improve exfat_get_cluster
> exfat: remove handling of non-file types in exfat_map_cluster
> exfat: support multi-cluster for exfat_map_cluster
> exfat: tweak cluster cache to support zero offset
> exfat: return the start of next cache in exfat_cache_lookup
> exfat: support multi-cluster for exfat_get_cluster
>
> fs/exfat/cache.c | 149 ++++++++++++++++++++++++++++----------------
> fs/exfat/exfat_fs.h | 7 +--
> fs/exfat/fatent.c | 61 +++++++++++-------
> fs/exfat/inode.c | 52 ++++++----------
> 4 files changed, 157 insertions(+), 112 deletions(-)
>
> --
> 2.43.0
>
Powered by blists - more mailing lists