xfs
[Top] [All Lists]

Re: disable preallocation

To: Ming Zhang <mingz@xxxxxxxxxxx>
Subject: Re: disable preallocation
From: Iustin Pop <iusty@xxxxxxxxx>
Date: Tue, 18 Apr 2006 23:42:52 +0200
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: <1145391567.8601.183.camel@localhost.localdomain>
Mail-followup-to: Ming Zhang <mingz@xxxxxxxxxxx>, linux-xfs@xxxxxxxxxxx
References: <1145391567.8601.183.camel@localhost.localdomain>
Sender: linux-xfs-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.11+cvs20060403
On Tue, Apr 18, 2006 at 04:19:27PM -0400, Ming Zhang wrote:
> Hi folks,
> 
> I checked the archive and found some discussion about how to do
> pre-allocation. Interestingly, my questions is how to disable the
> pre-allocation. What I want is no matter how much data I write to XFS,
> as long as the size are multiple of file system block size, the fs will
> not preallocate some blocks for me. Because if fs does not do
> pre-allocation, later I read the block that no previous written data, it
> can give me all 0, otherwise it might be some strange data.

> I am dumping many huge sparse martrix to disk and if that whole block is
> full of 0, i will not write it to disk at all, so have a hole there.
if you have a hole (i.e. you seek-ed over the block), any filesystem
that supports holes will not allocate the block on disk, and will return
0 on read. if the filesystem does not support holes, it will write a
block full of 0, I think.

> later when read back, i want to get all 0 as well. if fs do
> preallocation, then i probably will get some random data.
No, as far as I know XFS will never return random data. Try it and see.

> I found that ext2/3 will do pre-allocation. will xfs do it or not?
Yes, but it will not return random data from disk, but 0.

If you have python installed, try this simple program:

#!/usr/bin/python

f = file("test", "w+")
f.seek(4096, 0)
f.write("test")
f.seek(0, 0)
data = f.read(4096)
if data != "\0" * 4096:
    print "bad!"
else:
    print "ok"

And see what you get.

Regards,
Iustin


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