On Tue, May 07, 2019 at 10:19:24AM +0300, Nikolay Borisov wrote: > In case no cached_state argument is passed to > btrfs_lock_and_flush_ordered_range use one locally in the function. This > optimises the case when an ordered extent is found since the unlock > function will be able to unlock that state directly without searching > for it again.
This will speed up all callers that previously did not cache the state, right? That can improve bring some improvement, I wonder if the caching can be used in more places, there are still many plain lock_extent calls. check_can_nocow calls unlock_extent from 2 locations, so passing the cached pointer could help in case the ordered is found and thus unlock happens outside of btrfs_lock_and_flush_ordered_range. Elsewhere it's only the locking part so the cache would have to be passed along, but this might not make sense in all cases. Anyway, that's for another patch.