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