xfs
[Top] [All Lists]

Re: sparsify - utility to punch out blocks of 0s in a file

To: Eric Sandeen <sandeen@xxxxxxxxxx>
Subject: Re: sparsify - utility to punch out blocks of 0s in a file
From: Sunil Mushran <sunil.mushran@xxxxxxxxxx>
Date: Mon, 06 Feb 2012 10:40:11 -0800
Cc: ext4 development <linux-ext4@xxxxxxxxxxxxxxx>, xfs-oss <xfs@xxxxxxxxxxx>, ocfs2-devel@xxxxxxxxxxxxxx
In-reply-to: <4F2D8F30.3090802@xxxxxxxxxx>
References: <4F2D8F30.3090802@xxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; Linux i686; rv:9.0) Gecko/20111222 Thunderbird/9.0
On 02/04/2012 12:04 PM, Eric Sandeen wrote:
Now that ext4, xfs,&  ocfs2 can support punch hole, a tool to
"re-sparsify" a file by punching out ranges of 0s might be in order.

I whipped this up fast, it probably has bugs&  off-by-ones but thought
I'd send it out.  It's not terribly efficient doing 4k reads by default
I suppose.

I'll see if util-linux wants it after it gets beat into shape.
(or did a tool like this already exist and I missed it?)

(Another mode which does a file copy, possibly from stdin
might be good, like e2fsprogs/contrib/make-sparse.c ?  Although
that can be hacked up with cp already).

It works like this:

[root@inode sparsify]# ./sparsify  -h
Usage: sparsify [-m min hole size] [-o offset] [-l length] filename


So I have a similar tool queued up in ocfs2-tools. Named puncher.
http://oss.oracle.com/git/?p=ocfs2-tools.git;a=shortlog;h=puncher

I'll pull it out if we get something in util-linux. But maybe you can extract something useful from it.

Like.... maybe doing dry-run as default. It is an inplace modification
after all. Also using a large hole size as default (1MB). Over using hole punching will negatively affect read performance. We should make the sane choice for the user.

On a related note, it may make sense for ext4 to populate the cluster size (bigalloc) in stat.st_blksize.

2 cents...

<Prev in Thread] Current Thread [Next in Thread>