block: separate priority boosting from REQ_META
Add a new REQ_PRIO to let requests preempt others in the cfq I/O schedule, and lave REQ_META purely for marking requests as metadata in blktrace. All existing callers of REQ_META except for XFS are updated to also set REQ_PRIO for now. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Namhyung Kim <namhyung@gmail.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
This commit is contained in:
committed by
Jens Axboe
parent
5dc06c5a70
commit
65299a3b78
@@ -1134,7 +1134,7 @@ struct buffer_head *ext3_bread(handle_t *handle, struct inode *inode,
|
||||
return bh;
|
||||
if (buffer_uptodate(bh))
|
||||
return bh;
|
||||
ll_rw_block(READ | REQ_META, 1, &bh);
|
||||
ll_rw_block(READ | REQ_META | REQ_PRIO, 1, &bh);
|
||||
wait_on_buffer(bh);
|
||||
if (buffer_uptodate(bh))
|
||||
return bh;
|
||||
@@ -2807,7 +2807,7 @@ make_io:
|
||||
trace_ext3_load_inode(inode);
|
||||
get_bh(bh);
|
||||
bh->b_end_io = end_buffer_read_sync;
|
||||
submit_bh(READ | REQ_META, bh);
|
||||
submit_bh(READ | REQ_META | REQ_PRIO, bh);
|
||||
wait_on_buffer(bh);
|
||||
if (!buffer_uptodate(bh)) {
|
||||
ext3_error(inode->i_sb, "ext3_get_inode_loc",
|
||||
|
@@ -922,7 +922,8 @@ restart:
|
||||
bh = ext3_getblk(NULL, dir, b++, 0, &err);
|
||||
bh_use[ra_max] = bh;
|
||||
if (bh)
|
||||
ll_rw_block(READ | REQ_META, 1, &bh);
|
||||
ll_rw_block(READ | REQ_META | REQ_PRIO,
|
||||
1, &bh);
|
||||
}
|
||||
}
|
||||
if ((bh = bh_use[ra_ptr++]) == NULL)
|
||||
|
Reference in New Issue
Block a user