xfs
[Top] [All Lists]

Re: [PATCH 1/5][TAKE8] manpage for fallocate

To: Mark Fasheh <mark.fasheh@xxxxxxxxxx>
Subject: Re: [PATCH 1/5][TAKE8] manpage for fallocate
From: David Chinner <dgc@xxxxxxx>
Date: Thu, 19 Jul 2007 15:10:52 +1000
Cc: "Amit K. Arora" <aarora@xxxxxxxxxxxxxxxxxx>, linux-fsdevel@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, linux-ext4@xxxxxxxxxxxxxxx, xfs@xxxxxxxxxxx, tytso@xxxxxxx, cmm@xxxxxxxxxx, suparna@xxxxxxxxxx, adilger@xxxxxxxxxxxxx, dgc@xxxxxxx, michael.kerrisk@xxxxxxx
In-reply-to: <20070719034155.GE32734@xxxxxxxxxxxxxxxxxxxxxxxx>
References: <20070713184125.GA12156@xxxxxxxxxxxxxxxxxxxx> <20070713184625.GB12156@xxxxxxxxxxxxxxxxxxxx> <20070719034155.GE32734@xxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Mutt/1.4.2.1i
On Wed, Jul 18, 2007 at 08:41:55PM -0700, Mark Fasheh wrote:
> On Sat, Jul 14, 2007 at 12:16:25AM +0530, Amit K. Arora wrote:
> > After a successful call, subsequent writes are guaranteed not to fail 
> > because
> > of lack of disk space.
>   
> If a write to an unwritten region requires a node split, that could result
> in the allocation of new meta data which obviously could fail if the disk is
> truly full.

% git-log 84e1e99f112dead8f9ba036c02d24a9f5ce7f544 |head -10
commit 84e1e99f112dead8f9ba036c02d24a9f5ce7f544
Author: David Chinner <dgc@xxxxxxx>
Date:   Mon Jun 18 16:50:27 2007 +1000

    [XFS] Prevent ENOSPC from aborting transactions that need to succeed

    During delayed allocation extent conversion or unwritten extent
    conversion, we need to reserve some blocks for transactions reservations.
    We need to reserve these blocks in case a btree split occurs and we need
    to allocate some blocks.

------

IOWs, XFS didn't provide this guarantee until about a month ago....

> Granted that's unlikely to happen but maybe we should be conservative and
> say something like:
> 
> "After a successful call, subsequent writes are guaranteed to never require
> allocation of file data." ?

Well, the above phrasing is taken directly from the posix_fallocate() man
page, and it is intended that sys_fallocate() is used to implement
posix_fallocate(). In that case, the semantics we have to provide are
"writes are guaranteed not to fail due to lack of disk space".

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group


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