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? --D