mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 12:00:22 +09:00
f2fs: move discard parameters into discard_cmd_control
This patch unifies parameters related to how often discard is issued and how many requests go out at the same time by placing them in discard_cmd_control. The move will allow the parameters to be modified in the future without relying on hard-coded values. Signed-off-by: Konstantin Vyshetsky <vkon@google.com> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
committed by
Jaegeuk Kim
parent
04e34c8449
commit
7f148c6c55
@@ -396,6 +396,10 @@ struct discard_cmd_control {
|
||||
struct mutex cmd_lock;
|
||||
unsigned int nr_discards; /* # of discards in the list */
|
||||
unsigned int max_discards; /* max. discards to be issued */
|
||||
unsigned int max_discard_request; /* max. discard request per round */
|
||||
unsigned int min_discard_issue_time; /* min. interval between discard issue */
|
||||
unsigned int mid_discard_issue_time; /* mid. interval between discard issue */
|
||||
unsigned int max_discard_issue_time; /* max. interval between discard issue */
|
||||
unsigned int discard_granularity; /* discard granularity */
|
||||
unsigned int undiscard_blks; /* # of undiscard blocks */
|
||||
unsigned int next_pos; /* next discard position */
|
||||
|
||||
@@ -1159,14 +1159,14 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi,
|
||||
dpolicy->ordered = false;
|
||||
dpolicy->granularity = granularity;
|
||||
|
||||
dpolicy->max_requests = DEF_MAX_DISCARD_REQUEST;
|
||||
dpolicy->max_requests = dcc->max_discard_request;
|
||||
dpolicy->io_aware_gran = MAX_PLIST_NUM;
|
||||
dpolicy->timeout = false;
|
||||
|
||||
if (discard_type == DPOLICY_BG) {
|
||||
dpolicy->min_interval = DEF_MIN_DISCARD_ISSUE_TIME;
|
||||
dpolicy->mid_interval = DEF_MID_DISCARD_ISSUE_TIME;
|
||||
dpolicy->max_interval = DEF_MAX_DISCARD_ISSUE_TIME;
|
||||
dpolicy->min_interval = dcc->min_discard_issue_time;
|
||||
dpolicy->mid_interval = dcc->mid_discard_issue_time;
|
||||
dpolicy->max_interval = dcc->max_discard_issue_time;
|
||||
dpolicy->io_aware = true;
|
||||
dpolicy->sync = false;
|
||||
dpolicy->ordered = true;
|
||||
@@ -1174,12 +1174,12 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi,
|
||||
dpolicy->granularity = 1;
|
||||
if (atomic_read(&dcc->discard_cmd_cnt))
|
||||
dpolicy->max_interval =
|
||||
DEF_MIN_DISCARD_ISSUE_TIME;
|
||||
dcc->min_discard_issue_time;
|
||||
}
|
||||
} else if (discard_type == DPOLICY_FORCE) {
|
||||
dpolicy->min_interval = DEF_MIN_DISCARD_ISSUE_TIME;
|
||||
dpolicy->mid_interval = DEF_MID_DISCARD_ISSUE_TIME;
|
||||
dpolicy->max_interval = DEF_MAX_DISCARD_ISSUE_TIME;
|
||||
dpolicy->min_interval = dcc->min_discard_issue_time;
|
||||
dpolicy->mid_interval = dcc->mid_discard_issue_time;
|
||||
dpolicy->max_interval = dcc->max_discard_issue_time;
|
||||
dpolicy->io_aware = false;
|
||||
} else if (discard_type == DPOLICY_FSTRIM) {
|
||||
dpolicy->io_aware = false;
|
||||
@@ -1784,7 +1784,7 @@ static int issue_discard_thread(void *data)
|
||||
struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
|
||||
wait_queue_head_t *q = &dcc->discard_wait_queue;
|
||||
struct discard_policy dpolicy;
|
||||
unsigned int wait_ms = DEF_MIN_DISCARD_ISSUE_TIME;
|
||||
unsigned int wait_ms = dcc->min_discard_issue_time;
|
||||
int issued;
|
||||
|
||||
set_freezable();
|
||||
@@ -2183,6 +2183,10 @@ static int create_discard_cmd_control(struct f2fs_sb_info *sbi)
|
||||
atomic_set(&dcc->discard_cmd_cnt, 0);
|
||||
dcc->nr_discards = 0;
|
||||
dcc->max_discards = MAIN_SEGS(sbi) << sbi->log_blocks_per_seg;
|
||||
dcc->max_discard_request = DEF_MAX_DISCARD_REQUEST;
|
||||
dcc->min_discard_issue_time = DEF_MIN_DISCARD_ISSUE_TIME;
|
||||
dcc->mid_discard_issue_time = DEF_MID_DISCARD_ISSUE_TIME;
|
||||
dcc->max_discard_issue_time = DEF_MAX_DISCARD_ISSUE_TIME;
|
||||
dcc->undiscard_blks = 0;
|
||||
dcc->next_pos = 0;
|
||||
dcc->root = RB_ROOT_CACHED;
|
||||
|
||||
Reference in New Issue
Block a user