On Fri, Dec 20, 2019 at 12:17:17PM -0800, Darrick J. Wong wrote: > I think directio completions might suffer from the same class of problem > though, since we allow concurrent dio writes and dio doesn't do any of > the ioend batching that we do with buffered write ioends. OTOH direct I/O completions are per-I/O, and not per-extent like buffered I/O completions. Moreover for the case where we don't update i_size and don't need a separate log force (overwrites without O_SYNC or using fua) we could actually avoid the workqueue entirely with just a little work. > It might also be nice to find a way to unify the ioend paths since they > both do "convert unwritten and do cow remapping" on the entire range, > and diverge only once that's done. They were common a while ago and it was a complete mess. That is why I split them.