diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-15 19:33:41 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-15 19:33:41 -0500 |
| commit | f412f2c60b480fa5140a4b4cb321cd48c64e1812 (patch) | |
| tree | aafd5a5922b43daca4abdfa9bb723fc1f334108d | |
| parent | cd1177f25069cb494680eedd718e7c6d8fd85d10 (diff) | |
| parent | 1cf7e9c68fe84248174e998922b39e508375e7c1 (diff) | |
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
Pull second round of block driver updates from Jens Axboe:
"As mentioned in the original pull request, the bcache bits were pulled
because of their dependency on the immutable bio vecs. Kent re-did
this part and resubmitted it, so here's the 2nd round of (mostly)
driver updates for 3.13. It contains:
- The bcache work from Kent.
- Conversion of virtio-blk to blk-mq. This removes the bio and request
path, and substitutes with the blk-mq path instead. The end result
almost 200 deleted lines. Patch is acked by Asias and Christoph, who
both did a bunch of testing.
- A removal of bootmem.h include from Grygorii Strashko, part of a
larger series of his killing the dependency on that header file.
- Removal of __cpuinit from blk-mq from Paul Gortmaker"
* 'for-linus' of git://git.kernel.dk/linux-block: (56 commits)
virtio_blk: blk-mq support
blk-mq: remove newly added instances of __cpuinit
bcache: defensively handle format strings
bcache: Bypass torture test
bcache: Delete some slower inline asm
bcache: Use ida for bcache block dev minor
bcache: Fix sysfs splat on shutdown with flash only devs
bcache: Better full stripe scanning
bcache: Have btree_split() insert into parent directly
bcache: Move spinlock into struct time_stats
bcache: Kill sequential_merge option
bcache: Kill bch_next_recurse_key()
bcache: Avoid deadlocking in garbage collection
bcache: Incremental gc
bcache: Add make_btree_freeing_key()
bcache: Add btree_node_write_sync()
bcache: PRECEDING_KEY()
bcache: bch_(btree|extent)_ptr_invalid()
bcache: Don't bother with bucket refcount for btree node allocations
bcache: Debug code improvements
...
31 files changed, 3069 insertions, 3280 deletions
diff --git a/block/blk-ioc.c b/block/blk-ioc.c index 46cd7bd18b34..242df01413f6 100644 --- a/block/blk-ioc.c +++ b/block/blk-ioc.c | |||
| @@ -6,7 +6,6 @@ | |||
| 6 | #include <linux/init.h> | 6 | #include <linux/init.h> |
| 7 | #include <linux/bio.h> | 7 | #include <linux/bio.h> |
| 8 | #include <linux/blkdev.h> | 8 | #include <linux/blkdev.h> |
| 9 | #include <linux/bootmem.h> /* for max_pfn/max_low_pfn */ | ||
| 10 | #include <linux/slab.h> | 9 | #include <linux/slab.h> |
| 11 | 10 | ||
| 12 | #include "blk.h" | 11 | #include "blk.h" |
diff --git a/block/blk-mq-cpu.c b/block/blk-mq-cpu.c index f8ea39d7ae54..0045ace9bdf0 100644 --- a/block/blk-mq-cpu.c +++ b/block/blk-mq-cpu.c | |||
| @@ -13,8 +13,8 @@ | |||
| 13 | static LIST_HEAD(blk_mq_cpu_notify_list); | 13 | static LIST_HEAD(blk_mq_cpu_notify_list); |
| 14 | static DEFINE_SPINLOCK(blk_mq_cpu_notify_lock); | 14 | static DEFINE_SPINLOCK(blk_mq_cpu_notify_lock); |
| 15 | 15 | ||
| 16 | static int __cpuinit blk_mq_main_cpu_notify(struct notifier_block *self, | 16 | static int blk_mq_main_cpu_notify(struct notifier_block *self, |
| 17 | unsigned long action, void *hcpu) | 17 | unsigned long action, void *hcpu) |
| 18 | { | 18 | { |
| 19 | unsigned int cpu = (unsigned long) hcpu; | 19 | unsigned int cpu = (unsigned long) hcpu; |
| 20 | struct blk_mq_cpu_notifier *notify; | 20 | struct blk_mq_cpu_notifier *notify; |
| @@ -28,8 +28,8 @@ static int __cpuinit blk_mq_main_cpu_notify(struct notifier_block *self, | |||
| 28 | return NOTIFY_OK; | 28 | return NOTIFY_OK; |
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | static void __cpuinit blk_mq_cpu_notify(void *data, unsigned long action, | 31 | static void blk_mq_cpu_notify(void *data, unsigned long action, |
| 32 | unsigned int cpu) | 32 | unsigned int cpu) |
| 33 | { | 33 | { |
| 34 | if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) { | 34 | if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) { |
| 35 | /* | 35 | /* |
diff --git a/block/blk-mq.c b/block/blk-mq.c index c661896e2465..862f458d4760 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c | |||
| @@ -1444,7 +1444,7 @@ void blk_mq_free_queue(struct request_queue *q) | |||
| 1444 | EXPORT_SYMBOL(blk_mq_free_queue); | 1444 | EXPORT_SYMBOL(blk_mq_free_queue); |
| 1445 | 1445 | ||
| 1446 | /* Basically redo blk_mq_init_queue with queue frozen */ | 1446 | /* Basically redo blk_mq_init_queue with queue frozen */ |
| 1447 | static void __cpuinit blk_mq_queue_reinit(struct request_queue *q) | 1447 | static void blk_mq_queue_reinit(struct request_queue *q) |
| 1448 | { | 1448 | { |
| 1449 | blk_mq_freeze_queue(q); | 1449 | blk_mq_freeze_queue(q); |
| 1450 | 1450 | ||
| @@ -1461,8 +1461,8 @@ static void __cpuinit blk_mq_queue_reinit(struct request_queue *q) | |||
| 1461 | blk_mq_unfreeze_queue(q); | 1461 | blk_mq_unfreeze_queue(q); |
| 1462 | } | 1462 | } |
| 1463 | 1463 | ||
| 1464 | static int __cpuinit blk_mq_queue_reinit_notify(struct notifier_block *nb, | 1464 | static int blk_mq_queue_reinit_notify(struct notifier_block *nb, |
| 1465 | unsigned long action, void *hcpu) | 1465 | unsigned long action, void *hcpu) |
| 1466 | { | 1466 | { |
| 1467 | struct request_queue *q; | 1467 | struct request_queue *q; |
| 1468 | 1468 | ||
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index f3be496ac8fa..588479d58f52 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c | |||
| @@ -11,12 +11,11 @@ | |||
| 11 | #include <linux/string_helpers.h> | 11 | #include <linux/string_helpers.h> |
| 12 | #include <scsi/scsi_cmnd.h> | 12 | #include <scsi/scsi_cmnd.h> |
| 13 | #include <linux/idr.h> | 13 | #include <linux/idr.h> |
| 14 | #include <linux/blk-mq.h> | ||
| 15 | #include <linux/numa.h> | ||
| 14 | 16 | ||
| 15 | #define PART_BITS 4 | 17 | #define PART_BITS 4 |
| 16 | 18 | ||
| 17 | static bool use_bio; | ||
| 18 | module_param(use_bio, bool, S_IRUGO); | ||
| 19 | |||
| 20 | static int major; | 19 | static int major; |
| 21 | static DEFINE_IDA(vd_index_ida); | 20 | static DEFINE_IDA(vd_index_ida); |
| 22 | 21 | ||
| @@ -26,13 +25,11 @@ struct virtio_blk | |||
| 26 | { | 25 | { |
| 27 | struct virtio_device *vdev; | 26 | struct virtio_device *vdev; |
| 28 | struct virtqueue *vq; | 27 | struct virtqueue *vq; |
| 29 | wait_queue_head_t queue_wait; | 28 | spinlock_t vq_lock; |
| 30 | 29 | ||
| 31 | /* The disk structure for the kernel. */ | 30 | /* The disk structure for the kernel. */ |
| 32 | struct gendisk *disk; | 31 | struct gendisk *disk; |
| 33 | 32 | ||
| 34 | mempool_t *pool; | ||
| 35 | |||
| 36 | /* Process context for config space updates */ | 33 | /* Process context for config space updates */ |
| 37 | struct work_struct config_work; | 34 | struct work_struct config_work; |
| 38 | 35 | ||
| @@ -47,31 +44,17 @@ struct virtio_blk | |||
| 47 | 44 | ||
| 48 | /* Ida index - used to track minor number allocations. */ | 45 | /* Ida index - used to track minor number allocations. */ |
| 49 | int index; | 46 | int index; |
| 50 | |||
| 51 | /* Scatterlist: can be too big for stack. */ | ||
| 52 | struct scatterlist sg[/*sg_elems*/]; | ||
| 53 | }; | 47 | }; |
| 54 | 48 | ||
| 55 | struct virtblk_req | 49 | struct virtblk_req |
| 56 | { | 50 | { |
| 57 | struct request *req; | 51 | struct request *req; |
| 58 | struct bio *bio; | ||
| 59 | struct virtio_blk_outhdr out_hdr; | 52 | struct virtio_blk_outhdr out_hdr; |
| 60 | struct virtio_scsi_inhdr in_hdr; | 53 | struct virtio_scsi_inhdr in_hdr; |
| 61 | struct work_struct work; | ||
| 62 | struct virtio_blk *vblk; | ||
| 63 | int flags; | ||
| 64 | u8 status; | 54 | u8 status; |
| 65 | struct scatterlist sg[]; | 55 | struct scatterlist sg[]; |
| 66 | }; | 56 | }; |
| 67 | 57 | ||
| 68 | enum { | ||
| 69 | VBLK_IS_FLUSH = 1, | ||
| 70 | VBLK_REQ_FLUSH = 2, | ||
| 71 | VBLK_REQ_DATA = 4, | ||
| 72 | VBLK_REQ_FUA = 8, | ||
| 73 | }; | ||
| 74 | |||
| 75 | static inline int virtblk_result(struct virtblk_req *vbr) | 58 | static inline int virtblk_result(struct virtblk_req *vbr) |
| 76 | { | 59 | { |
| 77 | switch (vbr->status) { | 60 | switch (vbr->status) { |
| @@ -84,22 +67,6 @@ static inline int virtblk_result(struct virtblk_req *vbr) | |||
| 84 | } | ||
