On Mon, 2017-04-03 at 11:40 -0700, Jeremy Allison wrote: > On Mon, Apr 03, 2017 at 11:36:48AM -0700, Jeremy Allison wrote: > > On Mon, Apr 03, 2017 at 02:18:44PM -0400, Jeff Layton wrote: > > > On Mon, 2017-04-03 at 11:09 -0700, Jeremy Allison wrote: > > > > > > > > CIFS has a way to reserve space. Look into "allocation size" on create. > > > > > > That won't help here as it's done on open(). > > > > > > The problem here is that we might create a file (and not preallocate > > > anything), then write a bunch of stuff to the cache under an oplock. > > > Then when we go to write back, we get the CIFS equivalent of -ENOSPC. > > > > > > What local filesystems do (AIUI) is preallocate so that you can catch > > > an ENOSPC condition earlier, when you're dirtying new pages in the > > > cache. That's pretty much impossible to do on a network filesystem > > > though. > > > > There's also SMB_SET_FILE_ALLOCATION_INFO which can be > > done over SMB1/2/3 on an open file handle. > > There's *always* a way to do something in SMB1/2/3. :-). Yes, indeed...Still, I think we'll need to deal with this during writeback as well. Earlier versions of NFS certainly don't have anything along those lines, though you could probably do some sort of speculative preallocation with v4.2. -- Jeff Layton <jlayton@xxxxxxxxxx>