On Sun, Feb 9, 2014 at 2:39 AM, Shilong Wang <wangshilong1...@gmail.com> wrote:
> 2014-02-08 23:46 GMT+08:00 Wang Shilong <wangshilong1...@gmail.com>:
>> From: Wang Shilong <wangsl.f...@cn.fujitsu.com>
>>
>> This reverts commit 41ce9970a8a6a362ae8df145f7a03d789e9ef9d2.
>> Previously i was thinking we can use readonly root's commit root
>> safely while it is not true, readonly root may be cowed with the
>> following cases.
>>
>> 1.snapshot send root will cow source root.
>> 2.balance,device operations will also cow readonly send root
>> to relocate.
>>
>> So i have two ideas to make us safe to use commit root.
>>
>> -->approach 1:
>> make it protected by transaction and end transaction properly and we research
>> next item from root node(see btrfs_search_slot_for_read()).
>>
>> -->approach 2:
>> add another counter to local root structure to sync snapshot with send.
>> and add a global counter to sync send with exclusive device operations.
>>
>> So with approach 2, send can use commit root safely, because we make sure
>> send root can not be cowed during send. Unfortunately, it make codes *ugly*
>> and more complex to maintain.
>>
>> To make snapshot and send exclusively, device operations and send operation
>> exclusively with each other is a little confusing for common users.
>>
>> So why not drop into previous way.
>>
>> Cc: Josef Bacik <jba...@fb.com>
>> Signed-off-by: Wang Shilong <wangsl.f...@cn.fujitsu.com>
>> ---
>> Josef, if we reach agreement to adopt this approach, please revert
>> Filipe's patch(Btrfs: make some tree searches in send.c more efficient)
>> from btrfs-next.
>
> Oops, this patch guarantee searching commit roots are all protected by
> transaction, Filipe's
> patch is ok, we need update Josef's previous patch.

Hi Shilong,

I am confused. Can you explain why that optimization patch is a
problem, either with or without your patch or any other patch
currently flying around?

Either before or after the optimization, we search through the commit
root and after a key search we process a key while holding the leaf's
extent buffer. Both approaches call btrfs_next_leaf too (either
directly or via btrfs_search_slot_for_read).

Thanks

>
> Wang
> --
> 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



-- 
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."
--
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