mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* Re: [PATCH v1 6/9] exfat: remove unused parameters from exfat_get_cluster
@ 2025-12-30  9:05 Yuezhang.Mo
  2025-12-31  1:44 ` Chi Zhiling
  0 siblings, 1 reply; 3+ messages in thread
From: Yuezhang.Mo @ 2025-12-30  9:05 UTC (permalink / raw)
  To: chizhiling
  Cc: brauner, chizhiling, jack, linkinjeon, linux-fsdevel,
	linux-kernel, sj1557.seo, viro, willy, Yuezhang.Mo

> diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c                                                                                                                                      
> index f9501c3a3666..1062ce470cb1 100644
> --- a/fs/exfat/inode.c
> +++ b/fs/exfat/inode.c
> @@ -157,28 +157,26 @@ static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset,
>                               *clu += clu_offset;
>               }
>       } else if (ei->type == TYPE_FILE) {
> -             unsigned int fclus = 0;
>               int err = exfat_get_cluster(inode, clu_offset,
> -                             &fclus, clu, &last_clu, 1); 
> +                             clu, &last_clu);
>               if (err)
>                       return -EIO;
> -
> -             clu_offset -= fclus;
>       } else {
> +             unsigned int fclus = 0;
>               /* hint information */
>               if (clu_offset > 0 && ei->hint_bmap.off != EXFAT_EOF_CLUSTER &&
>                   ei->hint_bmap.off > 0 && clu_offset >= ei->hint_bmap.off) {
> -                     clu_offset -= ei->hint_bmap.off;
>                       /* hint_bmap.clu should be valid */
>                       WARN_ON(ei->hint_bmap.clu < 2); 
> +                     fclus = ei->hint_bmap.off;
>                       *clu = ei->hint_bmap.clu;
>               }
>  
> -             while (clu_offset > 0 && *clu != EXFAT_EOF_CLUSTER) {
> +             while (fclus < clu_offset && *clu != EXFAT_EOF_CLUSTER) {
>                       last_clu = *clu;
>                       if (exfat_get_next_cluster(sb, clu))
>                               return -EIO;
> -                     clu_offset--;
> +                     fclus++;
>               }

exfat_map_cluster() is only used for files. The code in this 'else' block is never executed and
can be cleaned up.

>       }


^ permalink raw reply	[flat|nested] 3+ messages in thread
* [PATCH v1 0/9] Enable exfat_get_block to support obtaining multiple clusters
@ 2025-12-26  9:44 Chi Zhiling
  2025-12-26  9:44 ` [PATCH v1 6/9] exfat: remove unused parameters from exfat_get_cluster Chi Zhiling
  0 siblings, 1 reply; 3+ messages in thread
From: Chi Zhiling @ 2025-12-26  9:44 UTC (permalink / raw)
  To: linux-fsdevel, linux-kernel
  Cc: Namjae Jeon, Sungjong Seo, Yuezhang Mo, Alexander Viro,
	Christian Brauner, Jan Kara, Matthew Wilcox, Chi Zhiling

From: Chi Zhiling <chizhiling@kylinos.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 :)

Chi Zhiling (9):
  exfat: add cache option for __exfat_ent_get
  exfat: support reuse buffer head for exfat_ent_get
  exfat: reuse cache to improve exfat_get_cluster
  exfat: improve exfat_count_num_clusters
  exfat: improve exfat_find_last_cluster
  exfat: remove unused parameters from exfat_get_cluster
  exfat: tweak exfat_cache_lookup to support zero offset cluster
  exfat: support multi-cluster for exfat_map_cluster
  exfat: support multi-cluster for exfat_get_cluster

 fs/exfat/cache.c    | 108 ++++++++++++++++++++++++++++----------------
 fs/exfat/exfat_fs.h |   7 ++-
 fs/exfat/fatent.c   |  61 ++++++++++++++++---------
 fs/exfat/inode.c    |  46 +++++++++++--------
 4 files changed, 137 insertions(+), 85 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-12-31  1:45 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-12-30  9:05 [PATCH v1 6/9] exfat: remove unused parameters from exfat_get_cluster Yuezhang.Mo
2025-12-31  1:44 ` Chi Zhiling
  -- strict thread matches above, loose matches on Subject: below --
2025-12-26  9:44 [PATCH v1 0/9] Enable exfat_get_block to support obtaining multiple clusters Chi Zhiling
2025-12-26  9:44 ` [PATCH v1 6/9] exfat: remove unused parameters from exfat_get_cluster Chi Zhiling

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®