On Tue, Apr 21, 2020 at 03:08:50PM +1000, Dave Chinner wrote: > > FYI - I do see that bmap() is also used by below APIs/subsystem. > > Not sure if any of subsystems mentioned below may still fail later > > if the underlying FS moved to iomap_bmap() interface or for > > any existing callers of iomap_bmap() :- > > > > 1. mm/page-io.c (generic_swapfile_activate() func) > > Filesystems using iomap infrastructure should be providing > aops->swap_activate() to map swapfile extents via > iomap_swapfile_activate() (e.g. see xfs_iomap_swapfile_activate()), > not using generic_swapfile_activate(). And we also need to eventually phase generic_swapfile_activate out, maybe by having a version with a get_blocks callback for the non-iomap case. > > 4. fs/jbd2/journal.c > > Broken on filesystems where the journal file might be placed beyond > a 32 bit block number, iomap_bmap() just makes that obvious. Needs > fixing. I think this wants to use iomap, as that would solve all the problems. > And you missed the MD bitmap code uses bmap() to map it's bitmap > storage file, which means that is broken is the bitmap file is on a > filesystem/block device > 16TB, too... This probably needs to use the in-kernel direct I/O interface, just as it is planned for cachefiles.