On Thu, Dec 20, 2018 at 08:07:41AM +0100, Christoph Hellwig wrote: > On Thu, Dec 20, 2018 at 09:43:35AM +1100, Dave Chinner wrote: > > On Tue, Dec 18, 2018 at 03:24:37PM -0800, Darrick J. Wong wrote: > > > On Mon, Dec 03, 2018 at 05:25:03PM -0500, Christoph Hellwig wrote: > > > Granted, I'm still rather fuzzy on what exactly is supposed to happen > > > with preallocating fallocate when all writes require an allocation to > > > succeed? > > > > For always_cow mode, perhaps we could consider preallocating into > > the COW fork rather than the data fork? That way when we go to write > > the data, we've already got the space allocated regardless of > > whether it is over a hole or existing data? > > For a speculative preallocation that is what we already do. But for > persistent preallocation that doesn't help as the COW fork is not > persistent. Yes, I know it's not persistent, but do we care for always_cow mode? Preallocation to prevent enospc is done just before the data is written, and if we put it in the COW fork then it will mostly just work and behave as expected for preventing ENOSPC on subsequent writes. Preallocation to control data layout is largely irrelevant to always_cow mode, so it really makes no difference to us if the preallocation disappears when the inode is cycled out of cache.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx