Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 04 Mar 2011 16:12:20 +0100
From:      Attila Nagy <bra@fsn.hu>
To:        freebsd-fs@freebsd.org
Subject:   Punching holes into (sparse) files - porting Solaris fcntl(F_FREESP) to FreeBSD?
Message-ID:  <4D710154.90409@fsn.hu>

next in thread | raw e-mail | index | archive | help
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,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D710154.90409>