Commit 3d136a11 authored by Stefan Behrens's avatar Stefan Behrens Committed by Josef Bacik

Btrfs: set ioprio of scrub readahead to idle

Reduce ioprio class of scrub readahead threads to idle priority.
This setting is fixed. This priority has shown the best performance
during all measurements.
Signed-off-by: default avatarStefan Behrens <sbehrens@giantdisaster.de>
parent 5bdbeb21
...@@ -173,6 +173,9 @@ static int btrfs_csum_sizes[] = { 4, 0 }; ...@@ -173,6 +173,9 @@ static int btrfs_csum_sizes[] = { 4, 0 };
#define BTRFS_FT_XATTR 8 #define BTRFS_FT_XATTR 8
#define BTRFS_FT_MAX 9 #define BTRFS_FT_MAX 9
/* ioprio of readahead is set to idle */
#define BTRFS_IOPRIO_READA (IOPRIO_PRIO_VALUE(IOPRIO_CLASS_IDLE, 0))
/* /*
* The key defines the order in the tree, and so it also defines (optimal) * The key defines the order in the tree, and so it also defines (optimal)
* block layout. * block layout.
......
...@@ -718,13 +718,18 @@ static void reada_start_machine_worker(struct btrfs_work *work) ...@@ -718,13 +718,18 @@ static void reada_start_machine_worker(struct btrfs_work *work)
{ {
struct reada_machine_work *rmw; struct reada_machine_work *rmw;
struct btrfs_fs_info *fs_info; struct btrfs_fs_info *fs_info;
int old_ioprio;
rmw = container_of(work, struct reada_machine_work, work); rmw = container_of(work, struct reada_machine_work, work);
fs_info = rmw->fs_info; fs_info = rmw->fs_info;
kfree(rmw); kfree(rmw);
old_ioprio = IOPRIO_PRIO_VALUE(task_nice_ioclass(current),
task_nice_ioprio(current));
set_task_ioprio(current, BTRFS_IOPRIO_READA);
__reada_start_machine(fs_info); __reada_start_machine(fs_info);
set_task_ioprio(current, old_ioprio);
} }
static void __reada_start_machine(struct btrfs_fs_info *fs_info) static void __reada_start_machine(struct btrfs_fs_info *fs_info)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment