aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2011-08-23 14:50:29 +0200
committerBrett Rogers <brettrogers11@gmail.com>2016-02-16 16:29:47 -0800
commit04f87da71ab532ee1d794cbb2a464d2f35cd118d (patch)
tree1cf7ef6f9d9cf3f1b226ee1cbb0040308f90916a /fs/ext4
parentb1ce5b792e0c6bddb9012dbbff63cfcc3a4aaf87 (diff)
downloadkernel_samsung_smdk4412-04f87da71ab532ee1d794cbb2a464d2f35cd118d.zip
kernel_samsung_smdk4412-04f87da71ab532ee1d794cbb2a464d2f35cd118d.tar.gz
kernel_samsung_smdk4412-04f87da71ab532ee1d794cbb2a464d2f35cd118d.tar.bz2
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. Backported to 3.0.x by Ketut Putu Kumajaya <ketut.kumajaya@gmail.com> Change-Id: Iad5ba7a105438776f74788c0aedaf85210c613f9
Diffstat (limited to 'fs/ext4')
-rw-r--r--fs/ext4/inode.c4
-rw-r--r--fs/ext4/namei.c3
2 files changed, 4 insertions, 3 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 0a0c404..294bc8f 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -1517,7 +1517,7 @@ struct buffer_head *ext4_bread(handle_t *handle, struct inode *inode,
return bh;
if (buffer_uptodate(bh))
return bh;
- ll_rw_block(READ_META, 1, &bh);
+ ll_rw_block(READ | REQ_META | REQ_PRIO, 1, &bh);
wait_on_buffer(bh);
if (buffer_uptodate(bh))
return bh;
@@ -4827,7 +4827,7 @@ make_io:
trace_ext4_load_inode(inode);
get_bh(bh);
bh->b_end_io = end_buffer_read_sync;
- submit_bh(READ_META, bh);
+ submit_bh(READ | REQ_META | REQ_PRIO, bh);
wait_on_buffer(bh);
if (!buffer_uptodate(bh)) {
EXT4_ERROR_INODE_BLOCK(inode, block,
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 8b227a9..4098064 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -919,7 +919,8 @@ restart:
bh = ext4_getblk(NULL, dir, b++, 0, &err);
bh_use[ra_max] = bh;
if (bh)
- ll_rw_block(READ_META, 1, &bh);
+ ll_rw_block(READ | REQ_META | REQ_PRIO,
+ 1, &bh);
}
}
if ((bh = bh_use[ra_ptr++]) == NULL)