Re: [PATCH v4 1/3] btrfs: add might_sleep() to some places in update_qgroup_limit_item()

From: Qu Wenruo
Date: Wed Nov 16 2022 - 03:44:24 EST




On 2022/11/16 16:09, ChenXiaoSong wrote:
在 2022/11/16 6:48, Qu Wenruo 写道:
Looks good.

We may want to add more in other locations, but this is really a good start.

Reviewed-by: Qu Wenruo <wqu@xxxxxxxx>

Thanks,
Qu

If I just add might_sleep() in btrfs_alloc_path() and btrfs_search_slot(), is it reasonable?

Adding it to btrfs_search_slot() is definitely correct.

But why for btrfs_alloc_path()? Wouldn't kmem_cache_zalloc() itself already do the might_sleep_if() somewhere?

I just looked the call chain, and indeed it is doing the check already:

btrfs_alloc_path()
|- kmem_cache_zalloc()
|- kmem_cache_alloc()
|- __kmem_cache_alloc_lru()
|- slab_alloc()
|- slab_alloc_node()
|- slab_pre_alloc_hook()
|- might_alloc()
|- might_sleep_if()

Thanks,
Qu


Or just add might_sleep() to one place in update_qgroup_limit_item() ?