Punching holes into (sparse) files - porting Solaris
fcntl(F_FREESP) to FreeBSD?
Pawel Jakub Dawidek
pjd at FreeBSD.org
Sun Mar 6 08:54:54 UTC 2011
On Fri, Mar 04, 2011 at 04:12:20PM +0100, Attila Nagy wrote:
> 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...
Well, adding new VOP is important decision. We could eventually
implement this via ioctl(2), I think... This is a nice feature after all.
I don't know why do you need this, but note that when compression is
enabled on a ZFS file system, all-zeros blocks are turned into holes, so
if you do have compression enabled and you write all zeros in the place
you want to punch a hole, the pool space should be reclaimed.
--
Pawel Jakub Dawidek http://www.wheelsystems.com
FreeBSD committer http://www.FreeBSD.org
Am I Evil? Yes, I Am! http://yomoli.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20110306/2945b7f7/attachment.pgp
More information about the freebsd-fs
mailing list