]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - block/blk-merge.c
FRV: Provide dma_map_page() for NOMMU and fix comments
[linux-2.6-omap-h63xx.git] / block / blk-merge.c
index eb2a3ca58303d1ce49d48803703f18dbe0045b8a..908d3e11ac523e032f3f73a91932eb49f1a5994a 100644 (file)
@@ -388,21 +388,20 @@ static int attempt_merge(struct request_queue *q, struct request *req,
 
        if (req->rq_disk) {
                struct hd_struct *part;
+               int cpu;
 
-               rcu_read_lock();
-
+               cpu = part_stat_lock();
                part = disk_map_sector_rcu(req->rq_disk, req->sector);
-               disk_round_stats(req->rq_disk);
-               req->rq_disk->in_flight--;
-               if (part) {
-                       part_round_stats(part);
-                       part->in_flight--;
-               }
 
-               rcu_read_unlock();
+               part_round_stats(cpu, part);
+               part_dec_in_flight(part);
+
+               part_stat_unlock();
        }
 
        req->ioprio = ioprio_best(req->ioprio, next->ioprio);
+       if (blk_rq_cpu_valid(next))
+               req->cpu = next->cpu;
 
        __blk_put_request(q, next);
        return 1;