lkml.org 
[lkml]   [2007]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 4/7][TAKE5] support new modes in fallocate
    On Sat, Jun 30, 2007 at 11:21:11AM +0100, Christoph Hellwig wrote:
    > On Tue, Jun 26, 2007 at 04:02:47PM +0530, Amit K. Arora wrote:
    > > > Can you clarify - what is the current behaviour when ENOSPC (or some other
    > > > error) is hit? Does it keep the current fallocate() or does it free it?
    > >
    > > Currently it is left on the file system implementation. In ext4, we do
    > > not undo preallocation if some error (say, ENOSPC) is hit. Hence it may
    > > end up with partial (pre)allocation. This is inline with dd and
    > > posix_fallocate, which also do not free the partially allocated space.
    >
    > I can't find anything in the specification of posix_fallocate
    > (http://www.opengroup.org/onlinepubs/009695399/functions/posix_fallocate.html)
    > that tells what should happen to allocate blocks on error.

    Yeah, and AFAICT glibc leaves them behind ATM.

    > But common sense would be to not leak disk space on failure of this
    > syscall, and this definitively should not be left up to the filesystem,
    > either we always leak it or always free it, and I'd strongly favour
    > the latter variant.

    We can't simply walk the range an remove unwritten extents, as some
    of them may have been present before the fallocate() call. That
    makes it extremely difficult to undo a failed call and not remove
    more pre-existing pre-allocations.

    Given the current behaviour for posix_fallocate() in glibc, I think
    that retaining the same error semantic and punting the cleanup to
    userspace (where the app will fail with ENOSPC anyway) is the only
    sane thing we can do here. Trying to undo this in the kernel leads
    to lots of extra rarely used code in error handling paths...

    Cheers,

    Dave.
    --
    Dave Chinner
    Principal Engineer
    SGI Australian Software Group
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-07-02 00:59    [W:4.046 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site