[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f73b04d6-d517-3e14-614e-527e5845000a@redhat.com>
Date: Wed, 29 Aug 2018 11:50:53 -0500
From: Eric Sandeen <esandeen@...hat.com>
To: Joshi <joshiiitr@...il.com>, linux-ext4@...r.kernel.org
Subject: Re: Defrag and delayed-allocation on Ext4
On 8/29/18 11:22 AM, Joshi wrote:
> Possibly a newbie question for the list, excuse my ignorance.
> I saw e4defrag code, which fallocates a temporary file in the outset.
>
> I imagine that extents would not get allocated to the this file at
> this time due to delayed-allocation feature (extent/block allocations
> should happen post writes which seem to happen much later, during
> extents copying between target-file and temporary-file).
>
> However, e4defrag needs extent information just after fallocate() to
> determine whether it is wise to go-ahead with defrag process i.e.
> whether new file is any less-fragmented than target one. I wonder how
> this decision-making is possible if fallocate does not allocate
> extents/blocks.
>
> I'd appreciate the thoughts.
fallocate does not uses delayed allocation; it actually allocates
specific blocks on disk before it returns. So delayed allocation
doesn't come into play for the temporary/donor file.
(delayed allocation happens during writeback, but for fallocate the
whole point is that there is no data written, it is simply an extent
allocation which is flagged to show that it is a preallocated extent
and that until it /is/ written to, reads should return 0s.)
-Eric
Powered by blists - more mailing lists