Re: [f2fs-dev] [PATCH 2/2] f2fs: let discard thread wait a little longer if dev is busy

2018-04-08 Thread Chao Yu
On 2018/4/8 15:11, Yunlei He wrote:
> This patch modify discard thread wait policy as below:
>   issued   io_interrupted wait time(ms)
> 1.8 0   50
> 2.  (0,8)   1   50
> 3.0 1  500 (dev is busy)
> 4.0 06 (no candidates)
> 
> Signed-off-by: Yunlei He 

Reviewed-by: Chao Yu 

Thanks,

--
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
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


[f2fs-dev] [PATCH 2/2] f2fs: let discard thread wait a little longer if dev is busy

2018-04-08 Thread Yunlei He
This patch modify discard thread wait policy as below:
issued   io_interrupted wait time(ms)
1.8 0   50
2.  (0,8)   1   50
3.0 1  500 (dev is busy)
4.0 06 (no candidates)

Signed-off-by: Yunlei He 
---
 fs/f2fs/f2fs.h| 2 ++
 fs/f2fs/segment.c | 6 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 1df7f10..0a6453b 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -184,6 +184,7 @@ enum {
 #define MAX_DISCARD_BLOCKS(sbi)BLKS_PER_SEC(sbi)
 #define DEF_MAX_DISCARD_REQUEST8   /* issue 8 discards per 
round */
 #define DEF_MIN_DISCARD_ISSUE_TIME 50  /* 50 ms, if exists */
+#define DEF_MID_DISCARD_ISSUE_TIME 500 /* 500 ms, if device busy */
 #define DEF_MAX_DISCARD_ISSUE_TIME 6   /* 60 s, if no candidates */
 #define DEF_CP_INTERVAL60  /* 60 secs */
 #define DEF_IDLE_INTERVAL  5   /* 5 secs */
@@ -285,6 +286,7 @@ enum {
 struct discard_policy {
int type;   /* type of discard */
unsigned int min_interval;  /* used for candidates exist */
+   unsigned int mid_interval;  /* used for device busy */
unsigned int max_interval;  /* used for candidates not exist */
unsigned int max_requests;  /* # of discards issued per round */
unsigned int io_aware_gran; /* minimum granularity discard not be 
aware of I/O */
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index f75f503..c7a8161e 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1425,9 +1425,11 @@ static int issue_discard_thread(void *data)
sb_start_intwrite(sbi->sb);
 
issued = __issue_discard_cmd(sbi, );
-   if (issued) {
+   if (issued > 0) {
__wait_all_discard_cmd(sbi, );
wait_ms = dpolicy.min_interval;
+   } else if (issued == -1){
+   wait_ms = dpolicy.mid_interval;
} else {
wait_ms = dpolicy.max_interval;
}
@@ -1726,10 +1728,12 @@ void init_discard_policy(struct discard_policy *dpolicy,
 
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->io_aware = true;
} 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->io_aware = false;
} else if (discard_type == DPOLICY_FSTRIM) {
-- 
1.9.1


--
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
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel