On Wed, Oct 09, 2013 at 08:57:12AM -0400, Josef Bacik wrote: > On Wed, Oct 09, 2013 at 06:07:20PM +0800, Liu Bo wrote: > > On Tue, Oct 08, 2013 at 01:31:57PM -0400, Josef Bacik wrote: > > > Liu fixed part of this problem and unfortunately I steered him in slightly the > > > wrong direction and so didn't completely fix the problem. The problem is we > > > limit the size of the delalloc range we are looking for to max bytes and then we > > > try to lock that range. If we fail to lock the pages in that range we will > > > shrink the max bytes to a single page and re loop. However if our first page is > > > inside of the delalloc range then we will end up limiting the end of the range > > > to a period before our first page. This is illustrated below > > > > > > [0 -------- delalloc range --------- 256mb] > > > [page] > > > > > > So find_delalloc_range will return with delalloc_start as 0 and end as 128mb, > > > and then we will notice that delalloc_start < *start and adjust it up, but not > > > adjust delalloc_end up, so things go sideways. To fix this we need to not limit > > > > This makes me more confused... > > so do you mean that 'delalloc_end < delalloc_start' leads to the not locked pages? > > > > No, it leads to an infinite loop, I still have no idea how that guy was seeing > unlocked pages with you patch :(. Thanks, Oh infinite loop yah, that makes sense :) -liubo -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
