On Tue, Jan 02, 2018 at 11:25:39AM +0100, Carlos Maiolino wrote: > On Fri, Dec 29, 2017 at 12:14:14AM +0100, Gionatan Danti wrote: > > Hi list, > > I would ask a question: how XFS block size affect read-modify-write in case > > of very small writes? > > > > Hi, > > > For example, suppose an XFS filesystem with the default 4K data block size. > > Am I correct saying that: > > - a 512B normal, cached writes will cause a read-modify-write of the entire > > 4K sector? Cached writes smaller than a *page* will cause RMW cycles in the page cache, regardless of the block size of the filesystem. > > - a 512B O_DIRECT write will *not* cause a read-modify-write of the 4K > > sector, rather it will be flushed to disk as-is (512 bytes in length)? Ok, there is a difference between *sector size* and *filesystem block size*. You seem to be using them interchangably in your question, and that's not correct. > IIRC, although the DIO requirement is to have writes aligned to the logical sector > size, issuing such IOs not properly aligned with the filesystem block size, have > a few consequences. > > - It will require exclusive inode io locks, so serializing IOs to the inode That is correct, but.... > - And yes, it will require a RMW to the block in question, all IO are always > made in filesystem block size units. .... this is not correct for direct IO. The direct IO path does not do RMW cycles at all. Put simply: a 512B DIO write on a (real or emulated) 512B sector device with a 4k FSB will be serialised by the filesystem and do a single 512B sector write to the device. However, if the device reports as a 4k sector device then a 512B DIO write will be rejected by the filesystem because sub-sector IO is not possible. Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html