[PATCH] fallocate returned values on failure

Jeremy Allison jra at samba.org
Thu Dec 4 23:04:39 MST 2014


On Fri, Dec 05, 2014 at 11:36:28AM +0800, Jones wrote:
> Hello Jeremy,
> 
> After test this look.txt it works!
> 
> And one more concern,
> upload a file named test.img to my linux box,
> once if fallocate() returns -1 with errno = ENOSPC,
> the file test.img is left in the linux box and its size is 0 Bytes,
> hmm not quite sure if this is okay just left a file test.img with 0 Bytes,
> or perhaps we could delete it in close_file() ?
> 
> 1. vfs_allocate_file_space():
> return -1 and errno = ENOSPC,
> back to earlier frame create_file_unixpath().
> 
> 2. create_file_unixpath():
> status = NT_STATUS_DISK_FULL,
> goto fail;
> 
> 3. close_file(req, fsp, ERROR_CLOSE);
> Hmm looks like the 0KB 10GB.img file is not delete at this api.

That is actually expected behavior.

We can call close_file() with type ERROR_CLOSE
under many different circumstances so deleting
the file is not always the correct thing to
do.

We'd need to special case the DISK_FULL
case in create_file_unixpath() and set
the delete on close bit only if we created
the file, and do a NORMAL_CLOSE here.


More information about the samba-technical mailing list