xfs
[Top] [All Lists]

Re: disable preallocation

To: David Chinner <dgc@xxxxxxx>
Subject: Re: disable preallocation
From: Ming Zhang <mingz@xxxxxxxxxxx>
Date: Tue, 18 Apr 2006 21:14:28 -0400
Cc: Iustin Pop <iusty@xxxxxxxxx>, linux-xfs@xxxxxxxxxxx
In-reply-to: <20060419005133.GF7574742@melbourne.sgi.com>
References: <1145391567.8601.183.camel@localhost.localdomain> <20060418214252.GA3300@lapi.hq.k1024.org> <1145397286.8601.202.camel@localhost.localdomain> <20060418223553.GB3300@lapi.hq.k1024.org> <1145401592.8601.211.camel@localhost.localdomain> <20060418232920.GC3300@lapi.hq.k1024.org> <1145404885.8601.214.camel@localhost.localdomain> <20060419000409.GD3300@lapi.hq.k1024.org> <1145406846.8601.216.camel@localhost.localdomain> <20060419005133.GF7574742@melbourne.sgi.com>
Reply-to: mingz@xxxxxxxxxxx
Sender: linux-xfs-bounce@xxxxxxxxxxx
On Wed, 2006-04-19 at 10:51 +1000, David Chinner wrote:
> On Tue, Apr 18, 2006 at 08:34:05PM -0400, Ming Zhang wrote:
> > 
> > so u mean even there are preallocated space, file system should be able
> > to know that is a hole, and that space is preallocated, not prewritten,
> 
> Preallocated space in XFS is not a hole - it is an unwritten extent.
> That is different from a hole in that the extent has been physically
> allocated, just marked as unwritten. Any attempt to read an unwritten
> extent will return lots of zero, just like reading from a hole.

are preallocated space and hole are exclusive?

assume we do a preallocation from LBA 0 to 100 for a start-empty file,
then write LBA 0-7 (assume 4KB block size), then write LBA 16-23.
then about area lba 8-15

* it is a preallocated space,
* it is also marked as unwritten,
* is it a hole?

i guess when xfs get a read request, it will check some metadata and
find out whether it is a hole, or/and a space allocated but unwritten,
then return 0 without any disk io. am i correct? could u point out the
related code that doing this?

if i do not use that ioctl to preallocate, will XFS do this
automatically base on write pattern?

> 
> > and it will return all 0? where is this posix standard i can check? thx
> 
> posix_fallocate()? Except it doesn't define what the contents of
> the area allocated must contain, and is not implemented on Linux
> in the filesystems. Instead, it is poorly emulated in glibc
> by writing chunks of zeros to disk and hence it returns zeros
> when the space is read before it is "written".

so this is why preallocate is recommended instead of doing a dd with
zero out?

> 
> Cheers,
> 
> Dave.


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