All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tao Ma <tm@tao.ma>
To: Dan Williams <dan.j.williams@intel.com>
Cc: axboe@kernel.dk, Tao Ma <boyu.mt@taobao.com>,
	Meelis Roos <mroos@ut.ee>,
	linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org,
	Ed Nadolski <edmund.nadolski@intel.com>
Subject: Re: [PATCH] block: fix blk_queue_end_tag()
Date: Wed, 21 Dec 2011 14:33:40 +0800	[thread overview]
Message-ID: <4EF17DC4.5010008@tao.ma> (raw)
In-Reply-To: <20111220233117.17757.71139.stgit@localhost6.localdomain6>

On 12/21/2011 07:33 AM, Dan Williams wrote:
> Commit 5e081591 "block: warn if tag is greater than real_max_depth"
> cleaned up blk_queue_end_tag() to warn when the tag is truly invalid
> (greater than real_max_depth).  However, it changed behavior in the tag
> < max_depth case to not end the request.  Leading to triggering of
> BUG_ON(blk_queued_rq(rq)) in the request completion path:
> 
>   http://marc.info/?l=linux-kernel&m=132204370518629&w=2
> 
> In order to allow blk_queue_resize_tags() to shrink the tag space
> blk_queue_end_tag() must always complete tags with a value less than
> real_max_depth regardless of the current max_depth.
> 
> Cc: Tao Ma <boyu.mt@taobao.com>
> Reported-by: Meelis Roos <mroos@ut.ee>
> Reported-by: Ed Nadolski <edmund.nadolski@intel.com>
> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
> ---
> Functionally the same as Tao Ma's fix [1], but just moves the warn into the
> if() directly.
> 
> [1]: http://marc.info/?l=linux-scsi&m=132439698602441&w=2
> 
> --
> Dan
> 
>  block/blk-tag.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/block/blk-tag.c b/block/blk-tag.c
> index e74d6d1..6e61262 100644
> --- a/block/blk-tag.c
> +++ b/block/blk-tag.c
> @@ -286,12 +286,13 @@ void blk_queue_end_tag(struct request_queue *q, struct request *rq)
>  
>  	BUG_ON(tag == -1);
>  
> -	if (unlikely(tag >= bqt->max_depth)) {
> +	if (WARN_ONCE(tag >= bqt->real_max_depth,
> +		      "%s: tag %d greater than tag map size: %d\n",
> +		      __func__, tag, bqt->real_max_depth)) {
>  		/*
>  		 * This can happen after tag depth has been reduced.
Please also change the comments here since it should never happen in the
right workload.

Thanks
Tao
>  		 * But tag shouldn't be larger than real_max_depth.
>  		 */
> -		WARN_ON(tag >= bqt->real_max_depth);
>  		return;
>  	}
>  
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


  reply	other threads:[~2011-12-21  6:33 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-20 23:33 [PATCH] block: fix blk_queue_end_tag() Dan Williams
2011-12-21  6:33 ` Tao Ma [this message]
2011-12-21  6:36   ` Meelis Roos
2011-12-21  6:48     ` Tao Ma
2011-12-21  7:30       ` Williams, Dan J
2011-12-21  8:16         ` Tao Ma
2011-12-21  8:22           ` Williams, Dan J
2011-12-21 10:05             ` Jens Axboe
2011-12-21 13:20         ` Matthew Wilcox
2011-12-21 17:37           ` Williams, Dan J

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4EF17DC4.5010008@tao.ma \
    --to=tm@tao.ma \
    --cc=axboe@kernel.dk \
    --cc=boyu.mt@taobao.com \
    --cc=dan.j.williams@intel.com \
    --cc=edmund.nadolski@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=mroos@ut.ee \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.