On Wed, Nov 01, 2017 at 12:42:18PM +0200, Nikolay Borisov wrote:
> 
> 
> On  1.11.2017 11:46, Roman Mamedov wrote:
> > On Wed,  1 Nov 2017 11:32:18 +0200
> > Nikolay Borisov <nbori...@suse.com> wrote:
> > 
> >> Fallocating a file in btrfs goes through several stages. The one before 
> >> actually
> >> inserting the fallocated extents is to create a qgroup reservation, 
> >> covering
> >> the desired range. To this end there is a loop in btrfs_fallocate which 
> >> checks
> >> to see if there are holes in the fallocated range or !PREALLOC extents 
> >> past EOF
> >> and if so create qgroup reservations for them. Unfortunately, the main 
> >> condition
> >> of the loop is burried right at the end of its body rather than in the 
> >> actual
> >> while statement which makes it non-obvious. Fix this by moving the 
> >> condition
> >> in the while statement where it belongs. No functional changes.
> > 
> > If it turns out that "cur_offset >= alloc_end" from the get go, previously 
> > the
> > loop body would be entered and executed once. With this change, it will not
> > anymore.
> 
> Good point, however this cannot happen, because for this to happen then
> the following 2 expression need to be equal:
> 
> alloc_start = round_down(offset, blocksize);
> alloc_end = round_up(offset + len, blocksize);
> 
> However, len is guaranteed to be > 0  due to a check in vfs_fallocate so
> those can't really be equal.

Agreed, and

Reviewed-by: David Sterba <dste...@suse.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to