On Fri, Jun 21, 2024 at 10:37:29AM +0800, Hongbo Li wrote: > > > On 2024/6/20 22:56, Jens Axboe wrote: > > On 6/20/24 8:49 AM, Matthew Wilcox wrote: > > > On Thu, Jun 20, 2024 at 10:16:02AM -0400, Kent Overstreet wrote: > > > I'm more sympathetic to "lets relax the alignment requirements", since > > > most IO devices actually can do IO to arbitrary boundaries (or at least > > > reasonable boundaries, eg cacheline alignment or 4-byte alignment). > > > The 512 byte alignment doesn't seem particularly rooted in any hardware > > > restrictions. > > > > We already did, based on real world use cases to avoid copies just > > because the memory wasn't aligned on a sector size boundary. It's > > perfectly valid now to do: > > > > struct queue_limits lim { > > .dma_alignment = 3, > > }; > > > > disk = blk_mq_alloc_disk(&tag_set, &lim, NULL); > > > > and have O_DIRECT with a 32-bit memory alignment work just fine, where > Does this mean that file system can relax its alignment restrictions on > offset or memory (not 512 or 4096)? Is it necessary to add alignment > restrictions in the super block of file system? Because there are different > alignment restrictions for different storage hardware driver. A multidevice filesystem can't get rid of those checks becaause if different devices have inconsistent restrictions that'll be quite the source of confusion later. And since devices can be hot-added, it does effectively need to be in the superblock.