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

bill davidsen
2003-12-08T04:14:55Z

In article <873cc0nkgf.fsf@ceramic.fifi.org>,
Philippe Troin <phil@fifi.org> wrote:
| 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().

Actually, I would thinmk that you *don't* want to do this at end of
file, turning zeros into holes is not the same as truncate, since it
will change the value of the file size, and that may not be what you
want at all.
--
bill davidsen <davidsen@tmr.com>
CTO, TMR Associates, Inc
Doing interesting things with little computers since 1979.