git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cpqarray: switch to seq_file
[safe/jmp/linux-2.6]
/
block
/
blk-core.c
diff --git
a/block/blk-core.c
b/block/blk-core.c
index
5255971
..
8135228
100644
(file)
--- a/
block/blk-core.c
+++ b/
block/blk-core.c
@@
-69,7
+69,7
@@
static void drive_stat_acct(struct request *rq, int new_io)
part_stat_inc(cpu, part, merges[rw]);
else {
part_round_stats(cpu, part);
part_stat_inc(cpu, part, merges[rw]);
else {
part_round_stats(cpu, part);
- part_inc_in_flight(part);
+ part_inc_in_flight(part
, rw
);
}
part_stat_unlock();
}
part_stat_unlock();
@@
-501,6
+501,7
@@
struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
(VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
q->backing_dev_info.state = 0;
q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
(VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
q->backing_dev_info.state = 0;
q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
+ q->backing_dev_info.name = "block";
err = bdi_init(&q->backing_dev_info);
if (err) {
err = bdi_init(&q->backing_dev_info);
if (err) {
@@
-1030,7
+1031,7
@@
static void part_round_stats_single(int cpu, struct hd_struct *part,
if (part->in_flight) {
__part_stat_add(cpu, part, time_in_queue,
if (part->in_flight) {
__part_stat_add(cpu, part, time_in_queue,
- part
->in_flight
* (now - part->stamp));
+ part
_in_flight(part)
* (now - part->stamp));
__part_stat_add(cpu, part, io_ticks, (now - part->stamp));
}
part->stamp = now;
__part_stat_add(cpu, part, io_ticks, (now - part->stamp));
}
part->stamp = now;
@@
-1146,7
+1147,7
@@
void init_request_from_bio(struct request *req, struct bio *bio)
*/
static inline bool queue_should_plug(struct request_queue *q)
{
*/
static inline bool queue_should_plug(struct request_queue *q)
{
- return !(blk_queue_nonrot(q) && blk_queue_
tagged
(q));
+ return !(blk_queue_nonrot(q) && blk_queue_
queuing
(q));
}
static int __make_request(struct request_queue *q, struct bio *bio)
}
static int __make_request(struct request_queue *q, struct bio *bio)
@@
-1462,8
+1463,6
@@
static inline void __generic_make_request(struct bio *bio)
if (old_sector != -1)
trace_block_remap(q, bio, old_dev, old_sector);
if (old_sector != -1)
trace_block_remap(q, bio, old_dev, old_sector);
- trace_block_bio_queue(q, bio);
-
old_sector = bio->bi_sector;
old_dev = bio->bi_bdev->bd_dev;
old_sector = bio->bi_sector;
old_dev = bio->bi_bdev->bd_dev;
@@
-1476,6
+1475,8
@@
static inline void __generic_make_request(struct bio *bio)
goto end_io;
}
goto end_io;
}
+ trace_block_bio_queue(q, bio);
+
ret = q->make_request_fn(q, bio);
} while (ret);
ret = q->make_request_fn(q, bio);
} while (ret);
@@
-1737,7
+1738,7
@@
static void blk_account_io_done(struct request *req)
part_stat_inc(cpu, part, ios[rw]);
part_stat_add(cpu, part, ticks[rw], duration);
part_round_stats(cpu, part);
part_stat_inc(cpu, part, ios[rw]);
part_stat_add(cpu, part, ticks[rw], duration);
part_round_stats(cpu, part);
- part_dec_in_flight(part);
+ part_dec_in_flight(part
, rw
);
part_stat_unlock();
}
part_stat_unlock();
}
@@
-1857,8
+1858,15
@@
void blk_dequeue_request(struct request *rq)
* and to it is freed is accounted as io that is in progress at
* the driver side.
*/
* and to it is freed is accounted as io that is in progress at
* the driver side.
*/
- if (blk_account_rq(rq))
+ if (blk_account_rq(rq))
{
q->in_flight[rq_is_sync(rq)]++;
q->in_flight[rq_is_sync(rq)]++;
+ /*
+ * Mark this device as supporting hardware queuing, if
+ * we have more IOs in flight than 4.
+ */
+ if (!blk_queue_queuing(q) && queue_in_flight(q) > 4)
+ set_bit(QUEUE_FLAG_CQ, &q->queue_flags);
+ }
}
/**
}
/**