On Tue, Jun 02, 2020 at 02:17:34PM +0000, Luis Chamberlain wrote: > On Tue, Jun 02, 2020 at 09:12:05AM +0200, Jan Kara wrote: > > Here is version of my patch rebased on top of Luis' blktrace fixes. Luis, if > > the patch looks fine, can you perhaps include it in your series since it seems > > you'll do another revision of your series due to discussion over patch 5/7? > > Thanks! > > Sure thing, will throw in the pile. I've updated the commit log as follows as well, as I think its important to annotate that the check for processing of the blktrace only makes sense if it was not set. Let me know if this is fine. The commit log is below. From: Jan Kara <jack@xxxxxxx> Date: Tue, 2 Jun 2020 09:12:05 +0200 Subject: [PATCH 1/8] blktrace: Avoid sparse warnings when assigning q->blk_trace Mostly for historical reasons, q->blk_trace is assigned through xchg() and cmpxchg() atomic operations. Although this is correct, sparse complains about this because it violates rcu annotations since commit c780e86dd48e ("blktrace: Protect q->blk_trace with RCU") which started to use rcu for accessing q->blk_trace. Furthermore there's no real need for atomic operations anymore since all changes to q->blk_trace happen under q->blk_trace_mutex *and* since it also makes more sense to check if q->blk_trace is set with the mutex held *earlier* and this is now done through the patch titled "blktrace: break out on concurrent calls" and was already before on blk_trace_setup_queue(). So let's just replace xchg() with rcu_replace_pointer() and cmpxchg() with explicit check and rcu_assign_pointer(). This makes the code more efficient and sparse happy. Reported-by: kbuild test robot <lkp@xxxxxxxxx> Signed-off-by: Jan Kara <jack@xxxxxxx> Signed-off-by: Luis Chamberlain <mcgrof@xxxxxxxxxx>