On Mon, Sep 30, 2019 at 01:07:31PM +0200, Christoph Hellwig wrote: > On Mon, Sep 16, 2019 at 11:34:28AM -0700, Darrick J. Wong wrote: > > > - if ((from <= poff || from >= poff + plen) && > > > + if (!(flags & IOMAP_WRITE_F_UNSHARE) && > > > > Mmm, archeology of code that I wrote originally and have forgotten > > already... :) > > > > I think the purpose of F_UNSHARE is to mimic the behavior of the code > > that's being removed, and the old behavior is that if a user asks to > > unshare a page backed by shared extents we'll read in all the blocks > > backing the page, even if that means reading in blocks that weren't part > > of the original unshare request, right? > > No. The flag causes the code to always read the page, even if the iomap > range covers the whole block. For normal writes that means we don't to > read the block in at all, but for unshare we absolutely must do so. Ahhh, right. Missed that. I'll go RVB the v2 patch now. --D