On 20:18 02/09, Darrick J. Wong wrote: > On Mon, Sep 02, 2019 at 06:31:04PM +0200, Christoph Hellwig wrote: > > On Sun, Sep 01, 2019 at 03:08:23PM -0500, Goldwyn Rodrigues wrote: > > > --- a/include/linux/iomap.h > > > +++ b/include/linux/iomap.h > > > @@ -37,6 +37,7 @@ struct vm_fault; > > > #define IOMAP_MAPPED 0x03 /* blocks allocated at @addr */ > > > #define IOMAP_UNWRITTEN 0x04 /* blocks allocated at @addr in unwritten state */ > > > #define IOMAP_INLINE 0x05 /* data inline in the inode */ > > > +#define IOMAP_COW 0x06 /* copy data from srcmap before writing */ > > > > I don't think IOMAP_COW can be a type - it is a flag given that we > > can do COW operations that allocate normal written extents (e.g. for > > direct I/O or DAX) and for delayed allocations. > > If iomap_apply always zeros out @srcmap before calling ->iomap_begin, do > we even need a flag/type code? Or does it suffice to check that > srcmap.length > 0 and use it appropriately? > While I understand your idea, it would be more robust to use the flag. Makes it clean and scalable for other aspects of two iomaps (like extent comparisons). -- Goldwyn