mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 12:57:53 +00:00
f2fs: return true if all cmd were issued or no cmd need to be issued for f2fs_issue_discard_timeout()
f2fs_issue_discard_timeout() returns whether discard cmds are dropped,
which does not match the meaning of the function. Let's change it to
return whether all discard cmd are issued.
After commit 4d67490498
("f2fs: Don't create discard thread when
device doesn't support realtime discard"), f2fs_issue_discard_timeout()
is alse called by f2fs_remount(). Since the comments of
f2fs_issue_discard_timeout() doesn't make much sense, let's update it.
Signed-off-by: Yangtao Li <frank.li@vivo.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
c1085957de
commit
b1c5ef26e4
2 changed files with 13 additions and 7 deletions
|
@ -1656,7 +1656,14 @@ void f2fs_stop_discard_thread(struct f2fs_sb_info *sbi)
|
|||
}
|
||||
}
|
||||
|
||||
/* This comes from f2fs_put_super */
|
||||
/**
|
||||
* f2fs_issue_discard_timeout() - Issue all discard cmd within UMOUNT_DISCARD_TIMEOUT
|
||||
* @sbi: the f2fs_sb_info data for discard cmd to issue
|
||||
*
|
||||
* When UMOUNT_DISCARD_TIMEOUT is exceeded, all remaining discard commands will be dropped
|
||||
*
|
||||
* Return true if issued all discard cmd or no discard cmd need issue, otherwise return false.
|
||||
*/
|
||||
bool f2fs_issue_discard_timeout(struct f2fs_sb_info *sbi)
|
||||
{
|
||||
struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
|
||||
|
@ -1664,7 +1671,7 @@ bool f2fs_issue_discard_timeout(struct f2fs_sb_info *sbi)
|
|||
bool dropped;
|
||||
|
||||
if (!atomic_read(&dcc->discard_cmd_cnt))
|
||||
return false;
|
||||
return true;
|
||||
|
||||
__init_discard_policy(sbi, &dpolicy, DPOLICY_UMOUNT,
|
||||
dcc->discard_granularity);
|
||||
|
@ -1675,7 +1682,7 @@ bool f2fs_issue_discard_timeout(struct f2fs_sb_info *sbi)
|
|||
__wait_all_discard_cmd(sbi, NULL);
|
||||
|
||||
f2fs_bug_on(sbi, atomic_read(&dcc->discard_cmd_cnt));
|
||||
return dropped;
|
||||
return !dropped;
|
||||
}
|
||||
|
||||
static int issue_discard_thread(void *data)
|
||||
|
|
|
@ -1546,7 +1546,7 @@ static void f2fs_put_super(struct super_block *sb)
|
|||
{
|
||||
struct f2fs_sb_info *sbi = F2FS_SB(sb);
|
||||
int i;
|
||||
bool dropped;
|
||||
bool done;
|
||||
|
||||
/* unregister procfs/sysfs entries in advance to avoid race case */
|
||||
f2fs_unregister_sysfs(sbi);
|
||||
|
@ -1576,9 +1576,8 @@ static void f2fs_put_super(struct super_block *sb)
|
|||
}
|
||||
|
||||
/* be sure to wait for any on-going discard commands */
|
||||
dropped = f2fs_issue_discard_timeout(sbi);
|
||||
|
||||
if (f2fs_realtime_discard_enable(sbi) && !sbi->discard_blks && !dropped) {
|
||||
done = f2fs_issue_discard_timeout(sbi);
|
||||
if (f2fs_realtime_discard_enable(sbi) && !sbi->discard_blks && done) {
|
||||
struct cp_control cpc = {
|
||||
.reason = CP_UMOUNT | CP_TRIMMED,
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue