Proposing space management API to perform hole-punching

Ka Ho Ng khng at freebsdfoundation.org
Thu Feb 11 19:11:59 UTC 2021


> On Feb 12, 2021, at 3:00 AM, Poul-Henning Kamp <phk at phk.freebsd.dk> wrote:
> 
> --------
> 
> Ka Ho Ng via freebsd-arch writes:
> 
>> The proposal contains fspacectl(2), VOP_DEALLOCATE(9) and vn_deallocate(9). fspacectl(2) is a space management API that takes a file descriptor, a command value, a range and flags.  The system call is responsible for doing space management operations such as punching holes, which is the only operation supported so far. [...]
> 
> 1. Which other operations are/can be foreseen ?
Besides SPACECTL_DEALLOC, it would be foreseeable to implement SPACECTL_ALLOC.
> 
> 2. What arguments would they need ?
The same, a tuple of offset and length.
> 
> 3. Should the syscall definition take this into account already now ?
kib@ thinks it is a bonus to simplify the number of system calls in the original fdeallocate(2) +
fzero(2) draft under the same differential, as we already got posix_fallocate.
Besides, one of the consideration behind is to implement linuxulator’s fallocate, which does
also does FALLOC_FL_KEEP_SIZE. 
> 
> 4. Are there any existing APIs for this ?
> 5. Should we stick closely to them ?  If not, why not ?
posix_fallocate. The system call however does not consider the case if file extending is not
required, nor does it do hole-punching.
> 
> -- 
> Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
> phk at FreeBSD.ORG         | TCP/IP since RFC 956
> FreeBSD committer       | BSD since 4.3-tahoe    
> Never attribute to malice what can adequately be explained by incompetence.


More information about the freebsd-arch mailing list