search for: __blk_mq_alloc_request

Displaying 17 results from an estimated 17 matches for "__blk_mq_alloc_request".

2014 Sep 11
3
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
...x3d0 [ 65.999238] [<0000000000135b70>] __do_softirq+0x124/0x2ac [ 65.999241] [<0000000000136000>] irq_exit+0xc4/0xe4 [ 65.999435] [<000000000010bc08>] do_IRQ+0x64/0x84 [ 66.437533] [<000000000067ccd8>] ext_skip+0x42/0x46 [ 66.437541] [<00000000003ed7b4>] __blk_mq_alloc_request+0x58/0x1e8 [ 66.437544] ([<00000000003ed788>] __blk_mq_alloc_request+0x2c/0x1e8) [ 66.437547] [<00000000003eef82>] blk_mq_map_request+0xc2/0x208 [ 66.437549] [<00000000003ef860>] blk_sq_make_request+0xac/0x350 [ 66.437721] [<00000000003e2d6c>] generic_make_request...
2014 Sep 11
3
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
...x3d0 [ 65.999238] [<0000000000135b70>] __do_softirq+0x124/0x2ac [ 65.999241] [<0000000000136000>] irq_exit+0xc4/0xe4 [ 65.999435] [<000000000010bc08>] do_IRQ+0x64/0x84 [ 66.437533] [<000000000067ccd8>] ext_skip+0x42/0x46 [ 66.437541] [<00000000003ed7b4>] __blk_mq_alloc_request+0x58/0x1e8 [ 66.437544] ([<00000000003ed788>] __blk_mq_alloc_request+0x2c/0x1e8) [ 66.437547] [<00000000003eef82>] blk_mq_map_request+0xc2/0x208 [ 66.437549] [<00000000003ef860>] blk_sq_make_request+0xac/0x350 [ 66.437721] [<00000000003e2d6c>] generic_make_request...
2014 Sep 12
3
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
...135b70>] __do_softirq+0x124/0x2ac >> [ 65.999241] [<0000000000136000>] irq_exit+0xc4/0xe4 >> [ 65.999435] [<000000000010bc08>] do_IRQ+0x64/0x84 >> [ 66.437533] [<000000000067ccd8>] ext_skip+0x42/0x46 >> [ 66.437541] [<00000000003ed7b4>] __blk_mq_alloc_request+0x58/0x1e8 >> [ 66.437544] ([<00000000003ed788>] __blk_mq_alloc_request+0x2c/0x1e8) >> [ 66.437547] [<00000000003eef82>] blk_mq_map_request+0xc2/0x208 >> [ 66.437549] [<00000000003ef860>] blk_sq_make_request+0xac/0x350 >> [ 66.437721] [<000000...
2014 Sep 12
3
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
...135b70>] __do_softirq+0x124/0x2ac >> [ 65.999241] [<0000000000136000>] irq_exit+0xc4/0xe4 >> [ 65.999435] [<000000000010bc08>] do_IRQ+0x64/0x84 >> [ 66.437533] [<000000000067ccd8>] ext_skip+0x42/0x46 >> [ 66.437541] [<00000000003ed7b4>] __blk_mq_alloc_request+0x58/0x1e8 >> [ 66.437544] ([<00000000003ed788>] __blk_mq_alloc_request+0x2c/0x1e8) >> [ 66.437547] [<00000000003eef82>] blk_mq_map_request+0xc2/0x208 >> [ 66.437549] [<00000000003ef860>] blk_sq_make_request+0xac/0x350 >> [ 66.437721] [<000000...
2014 Sep 17
2
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
...oks better to move rq initialization to __blk_mq_free_request() > too, otherwise timeout still may see old cmd_flags and rq->q before > rq's new initialization. Yes, __blk_mq_free_request() should also reset at least rq->cmd_flags, and I think we can remove the initialization from __blk_mq_alloc_request(). David > > > Thanks,
2014 Sep 17
2
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
...oks better to move rq initialization to __blk_mq_free_request() > too, otherwise timeout still may see old cmd_flags and rq->q before > rq's new initialization. Yes, __blk_mq_free_request() should also reset at least rq->cmd_flags, and I think we can remove the initialization from __blk_mq_alloc_request(). David > > > Thanks,
2014 Sep 18
3
[PATCH] blk-mq: Avoid race condition with uninitialized requests
This patch should fix the bug reported in https://lkml.org/lkml/2014/9/11/249. Test is still pending. David Hildenbrand (1): blk-mq: Avoid race condition with uninitialized requests block/blk-mq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- 1.8.5.5
2014 Sep 18
3
[PATCH] blk-mq: Avoid race condition with uninitialized requests
This patch should fix the bug reported in https://lkml.org/lkml/2014/9/11/249. Test is still pending. David Hildenbrand (1): blk-mq: Avoid race condition with uninitialized requests block/blk-mq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- 1.8.5.5
2014 Sep 12
0
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
...[<0000000000135b70>] __do_softirq+0x124/0x2ac > [ 65.999241] [<0000000000136000>] irq_exit+0xc4/0xe4 > [ 65.999435] [<000000000010bc08>] do_IRQ+0x64/0x84 > [ 66.437533] [<000000000067ccd8>] ext_skip+0x42/0x46 > [ 66.437541] [<00000000003ed7b4>] __blk_mq_alloc_request+0x58/0x1e8 > [ 66.437544] ([<00000000003ed788>] __blk_mq_alloc_request+0x2c/0x1e8) > [ 66.437547] [<00000000003eef82>] blk_mq_map_request+0xc2/0x208 > [ 66.437549] [<00000000003ef860>] blk_sq_make_request+0xac/0x350 > [ 66.437721] [<00000000003e2d6c>]...
2014 Sep 17
0
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
..._softirq+0x124/0x2ac >>> [ 65.999241] [<0000000000136000>] irq_exit+0xc4/0xe4 >>> [ 65.999435] [<000000000010bc08>] do_IRQ+0x64/0x84 >>> [ 66.437533] [<000000000067ccd8>] ext_skip+0x42/0x46 >>> [ 66.437541] [<00000000003ed7b4>] __blk_mq_alloc_request+0x58/0x1e8 >>> [ 66.437544] ([<00000000003ed788>] __blk_mq_alloc_request+0x2c/0x1e8) >>> [ 66.437547] [<00000000003eef82>] blk_mq_map_request+0xc2/0x208 >>> [ 66.437549] [<00000000003ef860>] blk_sq_make_request+0xac/0x350 >>> [ 66.4377...
2014 Sep 17
3
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
...el.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > Digging through the code, I think I found a possible cause: tags->rqs[..] is not initialized with zeroes (via alloc_pages_node in blk-mq.c:blk_mq_init_rq_map()). When a request is created: 1. __blk_mq_alloc_request() gets a free tag (thus e.g. removing it from bitmap_tags) 2. __blk_mq_alloc_request() initializes is via blk_mq_rq_ctx_init(). The struct is filled with life and rq->q is set. When blk_mq_hw_ctx_check_timeout() is called: 1. blk_mq_tag_busy_iter() is used to call blk_mq_timeout_check() on a...
2014 Sep 17
3
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
...el.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > Digging through the code, I think I found a possible cause: tags->rqs[..] is not initialized with zeroes (via alloc_pages_node in blk-mq.c:blk_mq_init_rq_map()). When a request is created: 1. __blk_mq_alloc_request() gets a free tag (thus e.g. removing it from bitmap_tags) 2. __blk_mq_alloc_request() initializes is via blk_mq_rq_ctx_init(). The struct is filled with life and rq->q is set. When blk_mq_hw_ctx_check_timeout() is called: 1. blk_mq_tag_busy_iter() is used to call blk_mq_timeout_check() on a...
2014 Sep 18
0
[PATCH] blk-mq: Avoid race condition with uninitialized requests
...vger.kernel.org Signed-off-by: David Hildenbrand <dahi at linux.vnet.ibm.com> --- block/blk-mq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/block/blk-mq.c b/block/blk-mq.c index 383ea0c..eed6340 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -203,7 +203,6 @@ __blk_mq_alloc_request(struct blk_mq_alloc_data *data, int rw) if (tag != BLK_MQ_TAG_FAIL) { rq = data->hctx->tags->rqs[tag]; - rq->cmd_flags = 0; if (blk_mq_tag_busy(data->hctx)) { rq->cmd_flags = REQ_MQ_INFLIGHT; atomic_inc(&data->hctx->nr_active); @@ -258,6 +257,7 @@ stat...
2014 Sep 22
1
[PATCH] blk-mq: Avoid race condition with uninitialized requests
...and should go upstream. Christian > --- > block/blk-mq.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/block/blk-mq.c b/block/blk-mq.c > index 383ea0c..eed6340 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c > @@ -203,7 +203,6 @@ __blk_mq_alloc_request(struct blk_mq_alloc_data *data, int rw) > if (tag != BLK_MQ_TAG_FAIL) { > rq = data->hctx->tags->rqs[tag]; > > - rq->cmd_flags = 0; > if (blk_mq_tag_busy(data->hctx)) { > rq->cmd_flags = REQ_MQ_INFLIGHT; > atomic_inc(&data->hctx->nr...
2014 Sep 22
1
[PATCH] blk-mq: Avoid race condition with uninitialized requests
...and should go upstream. Christian > --- > block/blk-mq.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/block/blk-mq.c b/block/blk-mq.c > index 383ea0c..eed6340 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c > @@ -203,7 +203,6 @@ __blk_mq_alloc_request(struct blk_mq_alloc_data *data, int rw) > if (tag != BLK_MQ_TAG_FAIL) { > rq = data->hctx->tags->rqs[tag]; > > - rq->cmd_flags = 0; > if (blk_mq_tag_busy(data->hctx)) { > rq->cmd_flags = REQ_MQ_INFLIGHT; > atomic_inc(&data->hctx->nr...
2014 Sep 17
2
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
On 2014-09-17 07:52, Ming Lei wrote: > On Wed, 17 Sep 2014 14:00:34 +0200 > David Hildenbrand <dahi at linux.vnet.ibm.com> wrote: > >>>>>> Does anyone have an idea? >>>>>> The request itself is completely filled with cc >>>>> >>>>> That is very weird, the 'rq' is got from hctx->tags, and rq should be
2014 Sep 17
2
blk-mq crash under KVM in multiqueue block code (with virtio-blk and ext4)
On 2014-09-17 07:52, Ming Lei wrote: > On Wed, 17 Sep 2014 14:00:34 +0200 > David Hildenbrand <dahi at linux.vnet.ibm.com> wrote: > >>>>>> Does anyone have an idea? >>>>>> The request itself is completely filled with cc >>>>> >>>>> That is very weird, the 'rq' is got from hctx->tags, and rq should be