Pull block fixes from Jens Axboe: - NVMe pull request from Keith, with fixes from a few folks. - bio and sbitmap before atomic barrier fixes (Andrea) - Hang fix for blk-mq freeze and unfreeze (Bob) - Single segment count regression fix (Christoph) - AoE now has a new maintainer - tools/io_uring/ Makefile fix, and sync with liburing (me) * tag 'for-linus-20190524' of git://git.kernel.dk/linux-block: (23 commits) tools/io_uring: sync with liburing tools/io_uring: fix Makefile for pthread library link blk-mq: fix hang caused by freeze/unfreeze sequence block: remove the bi_seg_{front,back}_size fields in struct bio block: remove the segment size check in bio_will_gap block: force an unlimited segment size on queues with a virt boundary block: don't decrement nr_phys_segments for physically contigous segments sbitmap: fix improper use of smp_mb__before_atomic() bio: fix improper use of smp_mb__before_atomic() aoe: list new maintainer for aoe driver nvme-pci: use blk-mq mapping for unmanaged irqs nvme: update MAINTAINERS nvme: copy MTFA field from identify controller nvme: fix memory leak for power latency tolerance nvme: release namespace SRCU protection before performing controller ioctls nvme: merge nvme_ns_ioctl into nvme_ioctl nvme: remove the ifdef around nvme_nvm_ioctl nvme: fix srcu locking on error return in nvme_get_ns_from_disk nvme: Fix known effects nvme-pci: Sync queues on reset ...
Showing the changes to include/linux (3 of 18 files). Show all
Unified · Split
| @@ -210,7 +210,7 @@ static inline void bio_cnt_set(struct bio *bio, unsigned int count) · 209 unmodified lines | ||
| 210 | 210 | { |
| 211 | 211 | if (count != 1) { |
| 212 | 212 | bio->bi_flags |= (1 << BIO_REFFED); |
| 213 | − smp_mb__before_atomic(); | |
| 213 | + smp_mb(); | |
| 214 | 214 | } |
| 215 | 215 | atomic_set(&bio->__bi_cnt, count); |
| 216 | 216 | } |
| @@ -159,13 +159,6 @@ struct bio { · 158 unmodified lines | ||
| 159 | 159 | */ |
| 160 | 160 | unsigned int bi_phys_segments; |
| 161 | 161 | |
| 162 | − /* | |
| 163 | − * To keep track of the max segment size, we account for the | |
| 164 | − * sizes of the first and last mergeable segments in this bio. | |
| 165 | − */ | |
| 166 | − unsigned int bi_seg_front_size; | |
| 167 | − unsigned int bi_seg_back_size; | |
| 168 | − | |
| 169 | 162 | struct bvec_iter bi_iter; |
| 170 | 163 | |
| 171 | 164 | atomic_t __bi_remaining; |
| @@ -542,7 +542,7 @@ struct request_queue { · 541 unmodified lines | ||
| 542 | 542 | struct list_head unused_hctx_list; |
| 543 | 543 | spinlock_t unused_hctx_lock; |
| 544 | 544 | |
| 545 | − atomic_t mq_freeze_depth; | |
| 545 | + int mq_freeze_depth; | |
| 546 | 546 | |
| 547 | 547 | #if defined(CONFIG_BLK_DEV_BSG) |
| 548 | 548 | struct bsg_class_device bsg_dev; |
| @@ -554,6 +554,11 @@ struct request_queue { · 5 unmodified lines | ||
| 554 | 554 | #endif |
| 555 | 555 | struct rcu_head rcu_head; |
| 556 | 556 | wait_queue_head_t mq_freeze_wq; |
| 557 | + /* | |
| 558 | + * Protect concurrent access to q_usage_counter by | |
| 559 | + * percpu_ref_kill() and percpu_ref_reinit(). | |
| 560 | + */ | |
| 561 | + struct mutex mq_freeze_lock; | |
| 557 | 562 | struct percpu_ref q_usage_counter; |
| 558 | 563 | |
| 559 | 564 | struct blk_mq_tag_set *tag_set; |