[PATCH 0/2] block device write path fixes
Tal Zussman <[email protected]> Sun, 02 Aug 2026 07:14:25 -0400
| Newsgroups | org.kernel.vger.linux-block,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Two independent fixes for the block device write path. Both issues were found by Sashiko during review of the "block: enable RWF_DONTCACHE for block devices" series [1] and are independent of it. Patch 1 fixes silently lost mmap writes with CONFIG_BUFFER_HEAD=n: def_blk_aops uses filemap_dirty_folio, which does not set the per-block dirty bits in the folio's iomap_folio_state, so writeback finds no dirty blocks and submits no I/O. Patch 2 makes blkdev_write_iter() take i_rwsem shared around the buffered-write fallback for a partial direct I/O write. The fallback currently runs with no lock held and races set_blocksize() changing i_blkbits and the mapping's minimum folio order, which can trip VM_BUG_ON_FOLIO in __filemap_add_folio() on kernels with block sizes above PAGE_SIZE. Both issues are currently unlikely to be hit in practice due to the specific configurations required to trigger them. [1] https://lore.kernel.org/all/[email protected]/ Signed-off-by: Tal Zussman <[email protected]> --- Tal Zussman (2): block: use iomap_dirty_folio for block devices block: take i_rwsem for the direct I/O write fallback block/fops.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) --- base-commit: f5098b6bae761e346ebcd9da7f95622c04733cff change-id: 20260801-blkdev-fixes-771b1c314ebb Best regards, -- Tal Zussman <[email protected]>