Sunil Mushran
2012-Feb-06 18:40 UTC
[Ocfs2-devel] sparsify - utility to punch out blocks of 0s in a file
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 at inode sparsify]# ./sparsify -h > Usage: sparsify [-m min hole size] [-o offset] [-l length] filenameSo 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...