On Thu, Sep 13 2007, Linus Torvalds wrote:My bad, I think I added the smp_mb__before_clear_bit() when it was __test_and_set_bit() like in the first hunk. diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c index a15845c..dfc9f22 100644 --- a/block/ll_rw_blk.c +++ b/block/ll_rw_blk.c @@ -1075,12 +1075,6 @@ void blk_queue_end_tag(struct request_queue *q, struct request *rq) */ return; - if (unlikely(!__test_and_clear_bit(tag, bqt->tag_map))) { - printk(KERN_ERR "%s: attempt to clear non-busy tag (%d)\n", - __FUNCTION__, tag); - return; - } - list_del_init(&rq->queuelist); rq->cmd_flags &= ~REQ_QUEUED; rq->tag = -1; @@ -1090,6 +1084,18 @@ void blk_queue_end_tag(struct request_queue *q, struct request *rq) __FUNCTION__, tag); bqt->tag_index[tag] = NULL; + + if (unlikely(!test_and_clear_bit(tag, bqt->tag_map))) { + printk(KERN_ERR "%s: attempt to clear non-busy tag (%d)\n", + __FUNCTION__, tag); + return; + } + + /* + * Ensure ordering between ->tag_index[tag] clear and tag clear + */ + smp_mb__after_clear_bit(); + bqt->busy--; } -- Jens Axboe -
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| david | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| David Woodhouse | [PATCH 1/3] firmware: allow firmware files to be built into kernel image |
| Peter Zijlstra | [PATCH 00/23] per device dirty throttling -v8 |
git: | |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Josip Rodin | bnx2_poll panicking kernel |
| Patrick McHardy | Re: [GIT]: Networking |
