Punching holes into (sparse) files - porting Solaris fcntl(F_FREESP)
to FreeBSD?
Attila Nagy
bra at fsn.hu
Fri Mar 4 15:12:23 UTC 2011
Hi,
Is it possible to make regions of files, with already written data
sparse? (I'm interested to do this on ZFS)
All I could find in this topic is:
http://www.mail-archive.com/zfs-discuss@opensolaris.org/msg29047.html
grepping through the source gives a match for VOP_SPACE in
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c:
zfs_replay_truncate(zfsvfs_t *zfsvfs, lr_truncate_t *lr, boolean_t byteswap)
{
#ifdef sun
[...]
error = VOP_SPACE(ZTOV(zp), F_FREESP, &fl, FWRITE | FOFFMAX,
lr->lr_offset, kcred, NULL);
And the relevant section from fcntl(2) in Solaris:
F_FREESP
Free storage space associated with a section of the
ordinary file fildes. The section is specified by a
variable of data type struct flock pointed to by arg.
The data type struct flock is defined in the <fcntl.h>
header (see fcntl.h(3HEAD)) and is described below. Note
that all file systems might not support all possible
variations of F_FREESP arguments. In particular, many
file systems allow space to be freed only at the end of
a file.
F_FREESP seems to be my friend, and it's implemented in Solaris's ZFS.
How hard would it be to complete the port and make it accessible from
FreeBSD?
I guess it was left out with a reason...
Thanks,
More information about the freebsd-fs
mailing list