On Tue, Mar 29 2005, Nick Piggin wrote:
> @@ -2577,19 +2577,18 @@ static int __make_request(request_queue_
>       spin_lock_prefetch(q->queue_lock);
>  
>       barrier = bio_barrier(bio);
> -     if (barrier && (q->ordered == QUEUE_ORDERED_NONE)) {
> +     if (unlikely(barrier) && (q->ordered == QUEUE_ORDERED_NONE)) {
>               err = -EOPNOTSUPP;
>               goto end_io;
>       }
>  
> -again:
>       spin_lock_irq(q->queue_lock);
>  
>       if (elv_queue_empty(q)) {
>               blk_plug_device(q);
>               goto get_rq;
>       }

This should just goto get_rq, the plug should happen only at the end
where you did add it:

> @@ -2693,10 +2675,11 @@ get_rq:
>       req->rq_disk = bio->bi_bdev->bd_disk;
>       req->start_time = jiffies;
>  
> +     spin_lock_irq(q->queue_lock);
> +     if (elv_queue_empty(q))
> +             blk_plug_device(q);
>       add_request(q, req);
>  out:
> -     if (freereq)
> -             __blk_put_request(q, freereq);
>       if (bio_sync(bio))
>               __generic_unplug_device(q);
>  

-- 
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to