[PATCH v1] erofs-utils: mkfs: Implement 'dsunit' alignment on blobdev

Gao Xiang hsiangkao at linux.alibaba.com
Thu Aug 21 13:33:20 AEST 2025


Hi Friendy,

On 2025/8/21 11:17, Friendy.Su at sony.com wrote:
> Hi, Gao,
> 
>> So I tend to just constrain the case to your limited case
>> first, could you explain more if chunk deduplication is
>> needed for your scenarios? and what's your real `chunksize`?
> 
> chunk deduplication is needed.
> 
> As I wrote in commit msg, we expect scenario below:
> 
> 1. mount with -o dax=always,
> 2. application calls mmap(addr, file).
> 3. application read from addr, page fault is triggered.
> We hope in kernel, erofs_dax_vm_ops.huge_fault() can be handled, do not fallback to erofs_dax_vm_ops.fault().

I totally understand the runtime side, but in short:

> 
> This required file body on blob devices aligned on huge page(2M), and deduplicate unit also is 2M. We can specify --dsunit=512, --chunksize=2*1024*1024 to fulfill this.
> 
> I don't think need a new command option.
> Currently, '--dsunit' can be set for formatting blobdev. The following cmdline completes successfully. User certainly thinks mkfs.erofs has executed --dsunit alignment.
> But actually, it does not.  This patch just simply makes actual runtime fit for cmdline looks like.
> 
> mkfs.erofs --blobdev /dev/sdb1 --dsunit 512 ......
> 
> If actually `--dsunit` does not work on blobdev, should prompt warning msg to user.

My cercern is why `--chunksize=4096 --dsunit=512` will not
lead to each 4k chunk to the 2M data boundary, is it obvious?

chunksize = 4096
dsunit = 512 = 2M

inode A (8k)    2M, 4M
inode B (12k)	6M, 2M, 4M, 8M?

Are you sure if there is no such use case in the
future? Mixing `--chunksize=4096 --dsunit=512` seems
non-obvious for this case.

Thanks,
Gao Xiang


> 
> Best Regards
> Friendy Su
> 
> ________________________________________
> From: Gao Xiang <hsiangkao at linux.alibaba.com>
> Sent: Thursday, August 21, 2025 10:00
> To: Su, Friendy; linux-erofs at lists.ozlabs.org
> Cc: Mo, Yuezhang; Palmer, Daniel (SGC)
> Subject: Re: [PATCH v1] erofs-utils: mkfs: Implement 'dsunit' alignment on blobdev
> 
> On 2025/8/20 17: 38, Friendy. Su@ sony. com wrote: > Hi, Gao, > >> What's your `--chunksize` ? consider the following: > > chunksize = 4096 > dsunit = 512 = 2M > >> and two inodes: > >> inode A (8k) 2M, 2M+4k
> 
> 
> 
> 
> On 2025/8/20 17:38, Friendy.Su at sony.com wrote:
>> Hi, Gao,
>>
>>> What's your `--chunksize` ? consider the following:
>>
>>     chunksize = 4096
>>     dsunit = 512 = 2M
>>
>>> and two inodes:
>>
>>> inode A (8k)    2M, 2M+4k
>>
>>> inode B (12k)   4M, 2M, 4M+4k, 4M+8k?
>>
>>> Is it possible? what's the expected behavior of
>>> this case.
>>
>> Yes. This is the expected behavior. See runtime below:
> 
> I understand that is the expected behavior according to this
> patch, but I'm just unsure if it's an expected behavior for
> the future wider setups (because some users may use `--dsunit`
> for other usage).
> 
> So I tend to just constrain the case to your limited case
> first, could you explain more if chunk deduplication is
> needed for your scenarios? and what's your real `chunksize`?
> 
> Maybe adding another command option for this is better.
> 
> Thanks,
> Gao Xiang



More information about the Linux-erofs mailing list