Re: stop using ioends for direct write completions

Christoph Hellwig
2016-02-02T11:20:54Z

On Fri, Jan 29, 2016 at 09:12:33AM -0500, Brian Foster wrote:
> My understanding is that the original requirement for ioends here was to
> track the state necessary in order to defer (to wq) completions that had
> to allocate transactions. Eventually, the deferred buffer state was
> implemented and we no longer required an ioend for that, so we removed
> the ioends here:
>
> 2ba6623 xfs: don't allocate an ioend for direct I/O completions
>
> Then just a couple months later, we merged the following to re-add the
> ioend into the dio path:
>
> d5cc2e3f xfs: DIO needs an ioend for writes

And I complained about that one! I didn't have time to provide a full
analysis and the patches around this one were criticial enough. But this
patch has the analysis on why ioends are not needed and bad which should
have been the full review back then. Note that this new version is
better than the old ioend removal as it does not just use the private
data as a boolean, but as a bitmask so that additional information
such as the COW status can be communicated.