On 04/10/2019 15.10, Matthew Wilcox wrote:
On Fri, Oct 04, 2019 at 01:11:06PM +0300, Konstantin Khlebnikov wrote:
This is very slow operation. There is no reason to do it again if somebody
else already drained all per-cpu vectors after we waited for lock.
+       seq = raw_read_seqcount_latch(&seqcount);
+
        mutex_lock(&lock);
+
+       /* Piggyback on drain done by somebody else. */
+       if (__read_seqcount_retry(&seqcount, seq))
+               goto done;
+
+       raw_write_seqcount_latch(&seqcount);
+

Do we really need the seqcount to do this?  Wouldn't a mutex_trylock()
have the same effect?


No, this is completely different semantics.

Operation could be safely skipped only if somebody else started and
finished drain after current task called this function.

Reply via email to