Once we encounter I/O interruption during issuing discards, we will delay
long time before next round, but if system status is I/O idle during the
time, it may loses opportunity to issue discards. So this patch changes
to hurry up to issue discard after io interruption.

Signed-off-by: Chao Yu <[email protected]>
---
 fs/f2fs/segment.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 7fd742f747ce..3ee2236fc091 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1062,6 +1062,7 @@ static int __issue_discard_cmd(struct f2fs_sb_info *sbi, 
bool issue_cond)
        struct blk_plug plug;
        int iter = 0, issued = 0;
        int i;
+       bool io_interrupted = false;
 
        mutex_lock(&dcc->cmd_lock);
        f2fs_bug_on(sbi,
@@ -1083,10 +1084,19 @@ static int __issue_discard_cmd(struct f2fs_sb_info 
*sbi, bool issue_cond)
                                continue;
                        }
 
-                       if (!issue_cond || is_idle(sbi)) {
+                       if (!issue_cond) {
+                               __submit_discard_cmd(sbi, dc);
                                issued++;
+                               continue;
+                       }
+
+                       if (is_idle(sbi)) {
                                __submit_discard_cmd(sbi, dc);
+                               issued++;
+                       } else {
+                               io_interrupted = true;
                        }
+
                        if (issue_cond && iter++ > DISCARD_ISSUE_RATE)
                                goto out;
                }
@@ -1097,6 +1107,9 @@ static int __issue_discard_cmd(struct f2fs_sb_info *sbi, 
bool issue_cond)
        blk_finish_plug(&plug);
        mutex_unlock(&dcc->cmd_lock);
 
+       if (!issued && io_interrupted)
+               issued = -1;
+
        return issued;
 }
 
-- 
2.13.1.388.g69e6b9b4f4a9


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to