Re: [PATCH 10/14] blk-mq: Uninit hardware context in order reverse to init

2016-09-19 Thread Omar Sandoval
On Sun, Sep 18, 2016 at 09:37:20AM +0200, Alexander Gordeev wrote:
> CC: linux-bl...@vger.kernel.org
> Signed-off-by: Alexander Gordeev 
> ---
>  block/blk-mq.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index cd32a08..c589096 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -2013,12 +2013,13 @@ static void blk_mq_realloc_hw_ctxs(struct 
> blk_mq_tag_set *set,
>   struct blk_mq_hw_ctx *hctx = hctxs[j];
>  
>   if (hctx) {
> + kobject_put(>kobj);
> +
>   if (hctx->tags) {
>   blk_mq_free_rq_map(set, hctx->tags, j);
>   set->tags[j] = NULL;
>   }
>   blk_mq_exit_hctx(q, set, hctx, j);
> - kobject_put(>kobj);
>   hctxs[j] = NULL;
>   }
>   }

Oh, this fixes my comment from the last one, but it should be folded in
to be bisect-safe.

-- 
Omar


Re: [PATCH 10/14] blk-mq: Uninit hardware context in order reverse to init

2016-09-19 Thread Omar Sandoval
On Sun, Sep 18, 2016 at 09:37:20AM +0200, Alexander Gordeev wrote:
> CC: linux-bl...@vger.kernel.org
> Signed-off-by: Alexander Gordeev 
> ---
>  block/blk-mq.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index cd32a08..c589096 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -2013,12 +2013,13 @@ static void blk_mq_realloc_hw_ctxs(struct 
> blk_mq_tag_set *set,
>   struct blk_mq_hw_ctx *hctx = hctxs[j];
>  
>   if (hctx) {
> + kobject_put(>kobj);
> +
>   if (hctx->tags) {
>   blk_mq_free_rq_map(set, hctx->tags, j);
>   set->tags[j] = NULL;
>   }
>   blk_mq_exit_hctx(q, set, hctx, j);
> - kobject_put(>kobj);
>   hctxs[j] = NULL;
>   }
>   }

Oh, this fixes my comment from the last one, but it should be folded in
to be bisect-safe.

-- 
Omar


[PATCH 10/14] blk-mq: Uninit hardware context in order reverse to init

2016-09-18 Thread Alexander Gordeev
CC: linux-bl...@vger.kernel.org
Signed-off-by: Alexander Gordeev 
---
 block/blk-mq.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index cd32a08..c589096 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -2013,12 +2013,13 @@ static void blk_mq_realloc_hw_ctxs(struct 
blk_mq_tag_set *set,
struct blk_mq_hw_ctx *hctx = hctxs[j];
 
if (hctx) {
+   kobject_put(>kobj);
+
if (hctx->tags) {
blk_mq_free_rq_map(set, hctx->tags, j);
set->tags[j] = NULL;
}
blk_mq_exit_hctx(q, set, hctx, j);
-   kobject_put(>kobj);
hctxs[j] = NULL;
}
}
-- 
1.8.3.1



[PATCH 10/14] blk-mq: Uninit hardware context in order reverse to init

2016-09-18 Thread Alexander Gordeev
CC: linux-bl...@vger.kernel.org
Signed-off-by: Alexander Gordeev 
---
 block/blk-mq.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index cd32a08..c589096 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -2013,12 +2013,13 @@ static void blk_mq_realloc_hw_ctxs(struct 
blk_mq_tag_set *set,
struct blk_mq_hw_ctx *hctx = hctxs[j];
 
if (hctx) {
+   kobject_put(>kobj);
+
if (hctx->tags) {
blk_mq_free_rq_map(set, hctx->tags, j);
set->tags[j] = NULL;
}
blk_mq_exit_hctx(q, set, hctx, j);
-   kobject_put(>kobj);
hctxs[j] = NULL;
}
}
-- 
1.8.3.1