linux-f2fs-devel.lists.sourceforge.net archive mirror
 help / color / mirror / Atom feed
* [PATCH] f2fs: skip checkpoint if having a dirty segment but no prefree at BG_GC -> FG_GC
@ 2017-02-24 20:43 Weichao Guo
  2017-02-24 18:49 ` Jaegeuk Kim
  0 siblings, 1 reply; 9+ messages in thread
From: Weichao Guo @ 2017-02-24 20:43 UTC (permalink / raw)
  To: jaegeuk, yuchao0; +Cc: guoweichao, linux-f2fs-devel

When turning to FG_GC from BG_GC, we need to write checkpoint in 2 cases:
* a) BG_GC have made some progress, e.g.: some prefree segments.
* b) There is no victim and no prefree segment.

For case a), previously, we also check if there is a dirty segment for
infering blocks moving in last BG_GC. But dirty segments do not always
indicate that, BG_GC may just start and do not move any blocks at all.
Futhermore, skipping checkpoint if there are some dirty segments but no
prefree segments is OK.

Signed-off-by: Weichao Guo <guoweichao@huawei.com>
---
 fs/f2fs/gc.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index 6c996e3..30d206a 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -958,7 +958,12 @@ int f2fs_gc(struct f2fs_sb_info *sbi, bool sync, bool background)
 		 * enough free sections, we should flush dent/node blocks and do
 		 * garbage collections.
 		 */
-		ret = write_checkpoint(sbi, &cpc);
+		if (prefree_segments(sbi))
+			ret = write_checkpoint(sbi, &cpc);
+		else if (!__get_victim(sbi, &segno, gc_type) {
+			segno = NULL_SEGNO;
+			ret = write_checkpoint(sbi, &cpc);
+		}
 		if (ret)
 			goto stop;
 	} else if (gc_type == BG_GC && !background) {
-- 
2.10.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-03-01 19:24 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-24 20:43 [PATCH] f2fs: skip checkpoint if having a dirty segment but no prefree at BG_GC -> FG_GC Weichao Guo
2017-02-24 18:49 ` Jaegeuk Kim
2017-02-25  8:20   ` guoweichao
2017-02-25 19:56     ` Jaegeuk Kim
2017-02-27  3:25       ` Chao Yu
2017-02-27 18:05         ` Jaegeuk Kim
2017-02-27 23:49           ` Jaegeuk Kim
2017-02-28 10:51             ` Chao Yu
2017-03-01 19:24               ` Jaegeuk Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).