diff options
author | Matthew Wilcox <matthew@wil.cx> | 2008-08-26 09:02:28 +0200 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-08-27 09:50:19 +0200 |
commit | 0e3eb45e4fe901d92bf9eae103155a57517af32e (patch) | |
tree | c46a1a27043c644386f68ddabf6d4322ec6b342b /block/blk-tag.c | |
parent | aefcc28a3a63ac33a298777aa50ba43641c75241 (diff) | |
download | linux-stable-0e3eb45e4fe901d92bf9eae103155a57517af32e.tar.gz linux-stable-0e3eb45e4fe901d92bf9eae103155a57517af32e.tar.bz2 linux-stable-0e3eb45e4fe901d92bf9eae103155a57517af32e.zip |
block: remove unused ->busy part of the block queue tag map
It's not used for anything. On top of that, it's racy and can thus
trigger a faulty BUG_ON() in __blk_free_tags() on queue exit.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/blk-tag.c')
-rw-r--r-- | block/blk-tag.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/block/blk-tag.c b/block/blk-tag.c index 32667beb03ee..ed5166fbc599 100644 --- a/block/blk-tag.c +++ b/block/blk-tag.c @@ -38,7 +38,8 @@ static int __blk_free_tags(struct blk_queue_tag *bqt) retval = atomic_dec_and_test(&bqt->refcnt); if (retval) { - BUG_ON(bqt->busy); + BUG_ON(find_first_bit(bqt->tag_map, bqt->max_depth) < + bqt->max_depth); kfree(bqt->tag_index); bqt->tag_index = NULL; @@ -147,7 +148,6 @@ static struct blk_queue_tag *__blk_queue_init_tags(struct request_queue *q, if (init_tag_map(q, tags, depth)) goto fail; - tags->busy = 0; atomic_set(&tags->refcnt, 1); return tags; fail: @@ -313,7 +313,6 @@ void blk_queue_end_tag(struct request_queue *q, struct request *rq) * unlock memory barrier semantics. */ clear_bit_unlock(tag, bqt->tag_map); - bqt->busy--; } EXPORT_SYMBOL(blk_queue_end_tag); @@ -368,7 +367,6 @@ int blk_queue_start_tag(struct request_queue *q, struct request *rq) bqt->tag_index[tag] = rq; blkdev_dequeue_request(rq); list_add(&rq->queuelist, &q->tag_busy_list); - bqt->busy++; return 0; } EXPORT_SYMBOL(blk_queue_start_tag); |