On Fri, Oct 25, 2019 at 01:26:05PM -0500, Eric Sandeen wrote: > On 10/25/19 12:40 PM, Christoph Hellwig wrote: > > The m_readio_log is only used for reporting the blksize (aka preferred > > I/O size) in struct stat. For all cases but a file system that does not > > use stripe alignment, but which has the wsync and largeio mount option > > set the value is the same as the write I/O size. > > > > Remove the field and report a smaller preferred I/O size for that corner > > case, which actually is the right thing to do for that case (except for > > the fact that is probably is entirely unused). > > hm, I wonder what the history of the WSYNC_ sizes are, tbh. So while I can't > speak to the need for a separate READIO_LOG or not, this doesn't seem > too far fetched... NFSv2 had a maximum client IO size of 8kB and writes were synchronous. The Irix NFS server had some magic in it (enabled by the filesystem wsync mount option) that allowed clients to have two sequential 8k writes in flight at once, allowing XFS to optimise for 16KB write IOs instead of the normal default of 64kB. This optimisation was the reason that, at the time (early-mid 90s), SGI machines had double the NFS write throughput of any other Unix systems. I'm surprised we still support NFSv2 at all in this day and age - I suspect we should just kill NFSv2 altogether. We need to keep the wsync option around for HA systems serving files to NFS and CIFS clients, but the 8kB IO size optimisations can certainly die.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx