From: Christoph Hellwig <hch@lst.de>
To: Namjae Jeon <linkinjeon@kernel.org>
Cc: sj1557.seo@samsung.com, yuezhang.mo@sony.com, brauner@kernel.org,
djwong@kernel.org, hch@lst.de, linux-fsdevel@vger.kernel.org,
anmuxixixi@gmail.com, dxdt@dev.snart.me, chizhiling@kylinos.cn,
chizhiling@163.com, linux-kernel@vger.kernel.org,
charsyam@gmail.com
Subject: Re: [PATCH v4 00/11] exfat: convert to iomap
Date: Tue, 19 May 2026 09:04:58 +0200 [thread overview]
Message-ID: <20260519070458.GA9109@lst.de> (raw)
In-Reply-To: <20260518114705.9601-1-linkinjeon@kernel.org>
So with all the reviews in we need to figure out how to merge
this. Does merging the iomap part through the vfs tree and
pulling that into the exfat tree work for you?
On Mon, May 18, 2026 at 08:46:54PM +0900, Namjae Jeon wrote:
> This patch series converts the exfat filesystem to the iomap framework for
> buffered I/O, direct I/O, and llseek (SEEK_HOLE/SEEK_DATA) support.
>
> iozone benchmark results (4KB cluster size, -s1g -r64k, 1GB file, 64KB record size)
>
> 1 thread 4 threads
> Write Read Write Read
> (MB/s) (MB/s) (MB/s) (MB/s)
> -----------------------------------------------------------------
> exfat + iomap patch 332.7 418.1 78.6 82.4
> Current exfat 278.4 415.1 42.1 38.0
> -----------------------------------------------------------------
> Improvement +19.5% +0.7% +86.7% +117.4%
>
>
> Available in the Git repository at:
> ===================================
> git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat.git iomap-work
>
> v4:
> - Declare initialized variables before uninitialized ones in
> __iomap_write_begin.
> - Clean up the logic for handling ei->valid_size in the non-alloc
> iomap read path.
> - Rename exfat_cluster_to_phys to exfat_cluster_to_phys_bytes.
> - Use end variable in exfat_fallback_buffered_write.
>
> v3:
> - Remove extra >> 9 when adding to inode->i_blocks.
> - Simplify exfat_file_open() by removing unnecessary err variable.
> - Separate exfat_truncate() error return conversion from iomap changes.
> - Fix xfstests failures with 512B cluster size.
> - Make exfat_truncate() return error code.
> - Use inode lock to protect valid_size in exfat_extend_valid_size().
> - Unify num_clusters calculation regardless of may_alloc.
> - Use min_t() to clamp iomap->length.
> - Return early in exfat_write_iomap_end() if no data written.
> - Remove s_lock in exfat_write_iomap_end().
> - Split DIO fallback buffered write into helper function.
> - Remove unnecessary goto in exfat_dio_write_iter().
>
> v2:
> - Replace macros with static inline functions.
> - Remove noop_direct_IO.
> - Consolidate read and write iomap_begin into __exfat_iomap_begin()
> - Zero out stale data in straddle block beyond valid_size.
> - Introduce IOMAP_F_ZERO_TAIL flag to remove exfat_iomap_put_folio().
> - Select FS_IOMAP in Kconfig.
> - Remove unnecessary alignment check in exfat_file_read_iter().
> - Just use generic_file_llseek directly.
> - Move exfat_extend_valid_size to exfat_file_write_iter().
> - Use pagecache_isize_extended() to remove iomap_zero_range in
> exfat_setattr().
> - fix mmap write data corruption with byte-by-byte fallocate.
> - Remove exfat_mkwrite_iomap_begin().
>
> Namjae Jeon (11):
> iomap: introduce IOMAP_F_ZERO_TAIL flag
> exfat: replace unsafe macros with static inline functions
> exfat: add balloc parameter to exfat_map_cluster() for iomap support
> exfat: add exfat_file_open()
> exfat: add support for multi-cluster allocation
> exfat: add data_start_bytes and exfat_cluster_to_phys_bytes() helper
> exfat: fix implicit declaration of brelse()
> exfat: add iomap buffered I/O support
> exfat: add iomap direct I/O support
> exfat: add support for SEEK_HOLE and SEEK_DATA in llseek
> exfat: make exfat_truncate() return error code
>
> fs/exfat/Kconfig | 2 +-
> fs/exfat/Makefile | 2 +-
> fs/exfat/balloc.c | 2 +-
> fs/exfat/dir.c | 50 +++---
> fs/exfat/exfat_fs.h | 140 ++++++++++++-----
> fs/exfat/fatent.c | 30 ++--
> fs/exfat/file.c | 263 +++++++++++++++++++++++--------
> fs/exfat/inode.c | 342 ++++++-----------------------------------
> fs/exfat/iomap.c | 263 +++++++++++++++++++++++++++++++
> fs/exfat/iomap.h | 15 ++
> fs/exfat/namei.c | 28 ++--
> fs/exfat/super.c | 5 +-
> fs/iomap/buffered-io.c | 4 +
> include/linux/iomap.h | 4 +
> 14 files changed, 703 insertions(+), 447 deletions(-)
> create mode 100644 fs/exfat/iomap.c
> create mode 100644 fs/exfat/iomap.h
>
> --
> 2.25.1
---end quoted text---
next prev parent reply other threads:[~2026-05-19 7:05 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-18 11:46 [PATCH v4 00/11] exfat: convert to iomap Namjae Jeon
2026-05-18 11:46 ` [PATCH v4 01/11] iomap: introduce IOMAP_F_ZERO_TAIL flag Namjae Jeon
2026-05-18 16:03 ` Darrick J. Wong
2026-05-19 3:32 ` Namjae Jeon
2026-05-22 12:53 ` Christian Brauner
2026-05-22 15:02 ` Namjae Jeon
2026-05-18 11:46 ` [PATCH v4 02/11] exfat: replace unsafe macros with static inline functions Namjae Jeon
2026-05-18 11:46 ` [PATCH v4 03/11] exfat: add balloc parameter to exfat_map_cluster() for iomap support Namjae Jeon
2026-05-18 11:46 ` [PATCH v4 04/11] exfat: add exfat_file_open() Namjae Jeon
2026-05-18 11:46 ` [PATCH v4 05/11] exfat: add support for multi-cluster allocation Namjae Jeon
2026-05-18 11:47 ` [PATCH v4 06/11] exfat: add data_start_bytes and exfat_cluster_to_phys_bytes() helper Namjae Jeon
2026-05-18 11:47 ` [PATCH v4 07/11] exfat: fix implicit declaration of brelse() Namjae Jeon
2026-05-18 11:47 ` [PATCH v4 08/11] exfat: add iomap buffered I/O support Namjae Jeon
2026-05-19 5:21 ` Yuezhang.Mo
2026-05-18 11:47 ` [PATCH v4 09/11] exfat: add iomap direct " Namjae Jeon
2026-05-18 11:47 ` [PATCH v4 10/11] exfat: add support for SEEK_HOLE and SEEK_DATA in llseek Namjae Jeon
2026-05-18 11:47 ` [PATCH v4 11/11] exfat: make exfat_truncate() return error code Namjae Jeon
2026-05-19 3:40 ` [PATCH v4 00/11] exfat: convert to iomap Darrick J. Wong
2026-05-19 4:05 ` Namjae Jeon
2026-05-19 7:04 ` Christoph Hellwig [this message]
2026-05-19 7:45 ` Namjae Jeon
2026-05-22 12:53 ` (subset) " Christian Brauner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260519070458.GA9109@lst.de \
--to=hch@lst.de \
--cc=anmuxixixi@gmail.com \
--cc=brauner@kernel.org \
--cc=charsyam@gmail.com \
--cc=chizhiling@163.com \
--cc=chizhiling@kylinos.cn \
--cc=djwong@kernel.org \
--cc=dxdt@dev.snart.me \
--cc=linkinjeon@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sj1557.seo@samsung.com \
--cc=yuezhang.mo@sony.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.