BIO_DELETE equivalent for file on FFS filesystem

Mike Meyer mwm at mired.org
Sat Jun 16 20:34:56 UTC 2012


On Sat, 16 Jun 2012 21:04:26 +0100
Chris Rees <utisoft at gmail.com> wrote:

> On Jun 16, 2012 8:37 PM, "Xin LI" <delphij at gmail.com> wrote:
> >
> > On Sat, Jun 16, 2012 at 12:01 PM, Chris Rees <utisoft at gmail.com> wrote:
> > > On Jun 14, 2012 5:49 AM, "Wojciech Puchar" <
> wojtek at wojtek.tensor.gdynia.pl>
> > > wrote:
> > >>>>
> > >>>> file to take 900MB or... can i call some system function to "punch"
> > >>>> holes?
> > >>>
> > >>>
> > >>> I think you can only truncate the file at this time, pretty much like
> > >>> brk() works for memory.
> > >>
> > >>
> > >>
> > >> BAD. suppose i keep windoze VM image on filesystem which takes 10GB but
> > > uses 5GB.
> > >>
> > >> i could write simple program to find out what blocks are unused and
> > > then...do nothing.
> > >>
> > >
> > > What if you cp it?
> >
> > That would be a dd(1) unless we teach cp(1) how to do sparse.  I think
> > what he wanted is to tell the OS "I don't need block XX - YY anymore"
> > and the OS creates a sparse hole, which is not available at this time.
> 
> Sorry, I must have misread.  I take it cp would take a file with holes and
> only copy the data part? i.e. take a 10G file of which 5G is a hole, you'd
> end up with a 5G file?

No, cp just does read()s. Reading data from a hole returns a block
full of zeros. A quick test (after writing a program to create the
file) shows this:

bhuda% df -h .
Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/md0      123M    1.2M    112M     1%    /tmp
bhuda% ls -lh holey.test
-rwxr-xr-x  1 mwm  wheel   953M Jun 16 16:22 holey.test

Ok, I've got a file that's 953M on an FS with 1.2 meg used. It's got
holes.

bhuda% cp holey.test foobar
/tmp: write failed, filesystem is full
cp: foobar: No space left on device

And doing a cp fails. Use dd conv=sparse to get the effect you want.

    <mike
-- 
Mike Meyer <mwm at mired.org>		http://www.mired.org/
Independent Software developer/SCM consultant, email for more information.

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org


More information about the freebsd-hackers mailing list