Re: [PATCH v6] sbitmap: fix io hung due to race on sbitmap_word::cleared

From: YangYang
Date: Thu Jul 11 2024 - 08:48:26 EST


On 2024/7/11 3:54, Bart Van Assche wrote:
On 7/9/24 11:56 PM, Yang Yang wrote:
+    /**
+     * @swap_lock: Held while swapping word <-> cleared
+     */
+    spinlock_t swap_lock;

Why is only swapping 'word' with 'cleared' protected by the spinlock?
If all 'cleared' changes would be protected by this spinlock then
that would allow to eliminate the expensive xchg() call from
sbitmap_deferred_clear().

The spinlock was initially introduced in ea86ea2cdced ("sbitmap:
ammortize cost of clearing bits").
I think if all 'cleared' changes are protected by the spinlock, the
overhead of clearing tags would definitely increase.

Thanks.


Thanks,

Bart.