Re: Is there a "make hole" (truncate in middle) syscall?

Philippe Troin
2003-12-05T01:04:59Z

Peter Chubb <peter@chubb.wattle.id.au> writes:

> >>>>> "Rob" == Rob Landley <rob@landley.net> writes:
>
> Rob> You can make a file with a hole by seeking past it and never
> Rob> writing to that bit, but is there any way to punch a hole in a
> Rob> file after the fact? (I mean other with lseek and write. Having
> Rob> a sparse file as the result....)
>
> SVr4 has fcntl(fd, F_FREESP, flock) that frees the space covered by
> the struct flock in the file. Linux doesn't have this, at least in
> the baseline kernels.

However most SVr4 (at least Solaris and HP-UX) only implement FREESP
when the freed space is at the file's tail. In other words, FREESP can
only be used to implement ftruncate().

Phil.