mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
f2fs: run discard jobs when put_super
When we umount f2fs, we need to avoid long delay due to discard commands, which is actually taking tens of seconds, if storage is very slow on UNMAP. So, this patch introduces timeout-based work on it. By default, let me give 5 seconds for discard. Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
2010987365
commit
03f2c02d8b
5 changed files with 27 additions and 3 deletions
|
@ -1037,6 +1037,7 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi,
|
|||
|
||||
dpolicy->max_requests = DEF_MAX_DISCARD_REQUEST;
|
||||
dpolicy->io_aware_gran = MAX_PLIST_NUM;
|
||||
dpolicy->timeout = 0;
|
||||
|
||||
if (discard_type == DPOLICY_BG) {
|
||||
dpolicy->min_interval = DEF_MIN_DISCARD_ISSUE_TIME;
|
||||
|
@ -1424,7 +1425,14 @@ static int __issue_discard_cmd(struct f2fs_sb_info *sbi,
|
|||
int i, issued = 0;
|
||||
bool io_interrupted = false;
|
||||
|
||||
if (dpolicy->timeout != 0)
|
||||
f2fs_update_time(sbi, dpolicy->timeout);
|
||||
|
||||
for (i = MAX_PLIST_NUM - 1; i >= 0; i--) {
|
||||
if (dpolicy->timeout != 0 &&
|
||||
f2fs_time_over(sbi, dpolicy->timeout))
|
||||
break;
|
||||
|
||||
if (i + 1 < dpolicy->granularity)
|
||||
break;
|
||||
|
||||
|
@ -1611,7 +1619,7 @@ void f2fs_stop_discard_thread(struct f2fs_sb_info *sbi)
|
|||
}
|
||||
|
||||
/* This comes from f2fs_put_super */
|
||||
bool f2fs_wait_discard_bios(struct f2fs_sb_info *sbi)
|
||||
bool f2fs_issue_discard_timeout(struct f2fs_sb_info *sbi)
|
||||
{
|
||||
struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
|
||||
struct discard_policy dpolicy;
|
||||
|
@ -1619,6 +1627,7 @@ bool f2fs_wait_discard_bios(struct f2fs_sb_info *sbi)
|
|||
|
||||
__init_discard_policy(sbi, &dpolicy, DPOLICY_UMOUNT,
|
||||
dcc->discard_granularity);
|
||||
dpolicy.timeout = UMOUNT_DISCARD_TIMEOUT;
|
||||
__issue_discard_cmd(sbi, &dpolicy);
|
||||
dropped = __drop_discard_cmd(sbi);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue