lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <c921b743-a7cb-4979-8074-266642f05988@163.com>
Date: Fri, 21 Nov 2025 13:51:07 +0800
From: Chi Zhiling <chizhiling@....com>
To: Namjae Jeon <linkinjeon@...nel.org>
Cc: linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
 Alexander Viro <viro@...iv.linux.org.uk>,
 Christian Brauner <brauner@...nel.org>, Jan Kara <jack@...e.cz>,
 Matthew Wilcox <willy@...radead.org>, Sungjong Seo <sj1557.seo@...sung.com>,
 Yuezhang Mo <yuezhang.mo@...y.com>, Chi Zhiling <chizhiling@...inos.cn>
Subject: Re: [RFC PATCH 0/7] Enable exfat_get_block to support obtaining
 multiple clusters

On 11/21/25 09:17, Namjae Jeon wrote:
> On Tue, Nov 18, 2025 at 5:26 PM Chi Zhiling <chizhiling@....com> wrote:
>>
>> From: Chi Zhiling <chizhiling@...inos.cn>
> Hi Chi,
>>
>> The purpose of this patchset is to prepare for adapting exfat to iomap
>> in the future. Currently, the main issue preventing exfat from supporting
>> iomap is its inability to fetch multiple contiguous clusters.
> Do you have a plan to work iomap support for exfat ?

Hi, Namjae


Firstly, I'm sorry that there are some errors in this patch. Due to my 
carelessness, the current patch did not work as expected. The parts that 
need to be modified are as follows:

diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c
index 256ba2af34eb..e52af92b1732 100644
--- a/fs/exfat/inode.c
+++ b/fs/exfat/inode.c
@@ -311,7 +311,7 @@ static int exfat_get_block(struct inode *inode, 
sector_t iblock,
                 err = exfat_count_contig_clusters(sb, &chain, &count);
                 if (err)
                         return err;
-               max_blocks = (count << sbi->sect_per_clus_bits) - 
sec_offset;
+               mapped_blocks = (count << sbi->sect_per_clus_bits) - 
sec_offset;
         }
         max_blocks = min(mapped_blocks, max_blocks);


Back to the question, I do have plan to support iomap for exfat, but I'm 
still testing how much benefit switching to iomap will bring :)

>>
>> However, this patchset does not directly modify exfat_map_cluster and
>> exfat_get_cluster to support multi-clusters. Instead, after obtaining
>> the first cluster, it uses exfat_count_contig_clusters to retrieve the
>> subsequent contiguous clusters.
>>
>> This approach is the one with the fewest changes among all the solutions
>> I have attempted, making the modifications easier to review.
>>
>> This patchset includes two main changes: one reduces the number of sb_bread
>> calls when accessing adjacent clusters to save time, and the other enables
>> fetching multiple contiguous entries in exfat_get_blocks.
> Are there any performance improvement measurements when applying this patch-set?

I don't have very detailed performance data yet,

With the fix above, I did a simple read test with big file (30G) on my 
pc (cluster = 512), no significantly improvement in IO read speed. but 
the time proportion of exfat_get_block has decreased.

NO_FAT_CHAIN file:
IO speed:                           2.9G/s -> 3.0G/s
proportion of exfat_get_block       26.7% -> 0.2%

FAT_CHAIN file:
IO speed:                           416M/s -> 444M/s
proportion of exfat_get_block       58% -> 27%

Thanks,

>>
>> Chi Zhiling (7):
>>    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: introduce exfat_count_contig_clusters
>>    exfat: get mutil-clusters in exfat_get_block
>>
>>   fs/exfat/cache.c    | 11 ++++--
>>   fs/exfat/exfat_fs.h |  6 ++-
>>   fs/exfat/fatent.c   | 90 ++++++++++++++++++++++++++++++++++++---------
>>   fs/exfat/inode.c    | 14 ++++++-
>>   4 files changed, 97 insertions(+), 24 deletions(-)
>>
>> --
>> 2.43.0
>>


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ