From: brking@us.ibm.com init_tag_map should not initialize the busy_list, refcnt, or busy fields in the tag map since blk_queue_resize_tags can call it while requests are active. Patch moves this initialization into blk_queue_init_tags. Signed-off-by: Jens Axboe Signed-off-by: Brian King Signed-off-by: Andrew Morton --- 25-akpm/drivers/block/ll_rw_blk.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff -puN drivers/block/ll_rw_blk.c~blk_resize_tags-fix drivers/block/ll_rw_blk.c --- 25/drivers/block/ll_rw_blk.c~blk_resize_tags-fix Mon Aug 9 14:41:30 2004 +++ 25-akpm/drivers/block/ll_rw_blk.c Mon Aug 9 14:41:30 2004 @@ -598,9 +598,6 @@ init_tag_map(request_queue_t *q, struct for (i = depth; i < bits * BLK_TAGS_PER_LONG; i++) __set_bit(i, tags->tag_map); - INIT_LIST_HEAD(&tags->busy_list); - tags->busy = 0; - atomic_set(&tags->refcnt, 1); return 0; fail: kfree(tags->tag_index); @@ -626,6 +623,10 @@ int blk_queue_init_tags(request_queue_t if (init_tag_map(q, tags, depth)) goto fail; + + INIT_LIST_HEAD(&tags->busy_list); + tags->busy = 0; + atomic_set(&tags->refcnt, 1); } else if (q->queue_tags) { if ((rc = blk_queue_resize_tags(q, depth))) return rc; _