Pull block fixes from Jens Axboe: - Passthrough insertion fix (Ming) - Kill off some unused arguments (John) - blktrace RCU fix (Jan) - Dead fields removal for null_blk (Dongli) - NVMe polled IO fix (Bijan) * tag 'block-5.6-2020-02-28' of git://git.kernel.dk/linux-block: nvme-pci: Hold cq_poll_lock while completing CQEs blk-mq: Remove some unused function arguments null_blk: remove unused fields in 'nullb_cmd' blktrace: Protect q->blk_trace with RCU blk-mq: insert passthrough request into hctx->dispatch directly
Showing the changes to include/linux (2 of 12 files). Show all
Unified · Split
| @@ -524,7 +524,7 @@ struct request_queue { · 523 unmodified lines | |||
| 524 | unsigned int sg_reserved_size; | 524 | unsigned int sg_reserved_size; |
| 525 | int node; | 525 | int node; |
| 526 | #ifdef CONFIG_BLK_DEV_IO_TRACE | 526 | #ifdef CONFIG_BLK_DEV_IO_TRACE |
| 527 | struct blk_trace *blk_trace; | 527 | struct blk_trace __rcu *blk_trace; |
| 528 | struct mutex blk_trace_mutex; | 528 | struct mutex blk_trace_mutex; |
| 529 | #endif | 529 | #endif |
| 530 | /* | 530 | /* |
| @@ -51,9 +51,13 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f · 50 unmodified lines | |||
| 51 | **/ | 51 | **/ |
| 52 | #define blk_add_cgroup_trace_msg(q, cg, fmt, ...) \ | 52 | #define blk_add_cgroup_trace_msg(q, cg, fmt, ...) \ |
| 53 | do { \ | 53 | do { \ |
| 54 | struct blk_trace *bt = (q)->blk_trace; \ | 54 | struct blk_trace *bt; \ |
| 55 | \ | ||
| 56 | rcu_read_lock(); \ | ||
| 57 | bt = rcu_dereference((q)->blk_trace); \ | ||
| 55 | if (unlikely(bt)) \ | 58 | if (unlikely(bt)) \ |
| 56 | __trace_note_message(bt, cg, fmt, ##__VA_ARGS__);\ | 59 | __trace_note_message(bt, cg, fmt, ##__VA_ARGS__);\ |
| 60 | rcu_read_unlock(); \ | ||
| 57 | } while (0) | 61 | } while (0) |
| 58 | #define blk_add_trace_msg(q, fmt, ...) \ | 62 | #define blk_add_trace_msg(q, fmt, ...) \ |
| 59 | blk_add_cgroup_trace_msg(q, NULL, fmt, ##__VA_ARGS__) | 63 | blk_add_cgroup_trace_msg(q, NULL, fmt, ##__VA_ARGS__) |
| @@ -61,10 +65,14 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f · 1 unmodified line | |||
| 61 | 65 | ||
| 62 | static inline bool blk_trace_note_message_enabled(struct request_queue *q) | 66 | static inline bool blk_trace_note_message_enabled(struct request_queue *q) |
| 63 | { | 67 | { |
| 64 | struct blk_trace *bt = q->blk_trace; | 68 | struct blk_trace *bt; |
| 65 | if (likely(!bt)) | 69 | bool ret; |
| 66 | return false; | 70 | |
| 67 | return bt->act_mask & BLK_TC_NOTIFY; | 71 | rcu_read_lock(); |
| 72 | bt = rcu_dereference(q->blk_trace); | ||
| 73 | ret = bt && (bt->act_mask & BLK_TC_NOTIFY); | ||
| 74 | rcu_read_unlock(); | ||
| 75 | return ret; | ||
| 68 | } | 76 | } |
| 69 | 77 | ||
| 70 | extern void blk_add_driver_data(struct request_queue *q, struct request *rq, | 78 | extern void blk_add_driver_data(struct request_queue *q, struct request *rq, |