Commit 99366387 authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

Revert "f2fs: add timeout in f2fs_enable_checkpoint()"



This reverts commit 4bc34777.

Let's apply a better approach to flush the only dirty pages committed by user
to avoid the delay caused by unncessary incoming ones.

Reviewed-by: default avatarChao Yu <chao@kernel.org>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent a5d8b9d9
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -311,7 +311,6 @@ enum {
#define DEF_CP_INTERVAL			60	/* 60 secs */
#define DEF_IDLE_INTERVAL		5	/* 5 secs */
#define DEF_DISABLE_INTERVAL		5	/* 5 secs */
#define DEF_ENABLE_INTERVAL		16	/* 16 secs */
#define DEF_DISABLE_QUICK_INTERVAL	1	/* 1 secs */
#define DEF_UMOUNT_DISCARD_TIMEOUT	5	/* 5 secs */

@@ -1486,7 +1485,6 @@ enum {
	DISCARD_TIME,
	GC_TIME,
	DISABLE_TIME,
	ENABLE_TIME,
	UMOUNT_DISCARD_TIMEOUT,
	MAX_TIME,
};
+4 −11
Original line number Diff line number Diff line
@@ -2686,7 +2686,7 @@ static int f2fs_disable_checkpoint(struct f2fs_sb_info *sbi)

static int f2fs_enable_checkpoint(struct f2fs_sb_info *sbi)
{
	unsigned int nr_pages = get_pages(sbi, F2FS_DIRTY_DATA) / 16;
	int retry = DEFAULT_RETRY_IO_COUNT;
	long long start, writeback, end;
	int ret;
	struct f2fs_lock_context lc;
@@ -2696,22 +2696,16 @@ static int f2fs_enable_checkpoint(struct f2fs_sb_info *sbi)
					get_pages(sbi, F2FS_DIRTY_NODES),
					get_pages(sbi, F2FS_DIRTY_DATA));

	f2fs_update_time(sbi, ENABLE_TIME);

	start = ktime_get();

	/* we should flush all the data to keep data consistency */
	while (get_pages(sbi, F2FS_DIRTY_DATA)) {
		writeback_inodes_sb_nr(sbi->sb, nr_pages, WB_REASON_SYNC);
	do {
		sync_inodes_sb(sbi->sb);
		f2fs_io_schedule_timeout(DEFAULT_SCHEDULE_TIMEOUT);
	} while (get_pages(sbi, F2FS_DIRTY_DATA) && retry--);

		if (f2fs_time_over(sbi, ENABLE_TIME))
			break;
	}
	writeback = ktime_get();

	sync_inodes_sb(sbi->sb);

	if (unlikely(get_pages(sbi, F2FS_DIRTY_DATA)))
		f2fs_warn(sbi, "checkpoint=enable has some unwritten data: %lld",
					get_pages(sbi, F2FS_DIRTY_DATA));
@@ -4333,7 +4327,6 @@ static void init_sb_info(struct f2fs_sb_info *sbi)
	sbi->interval_time[DISCARD_TIME] = DEF_IDLE_INTERVAL;
	sbi->interval_time[GC_TIME] = DEF_IDLE_INTERVAL;
	sbi->interval_time[DISABLE_TIME] = DEF_DISABLE_INTERVAL;
	sbi->interval_time[ENABLE_TIME] = DEF_ENABLE_INTERVAL;
	sbi->interval_time[UMOUNT_DISCARD_TIMEOUT] =
				DEF_UMOUNT_DISCARD_TIMEOUT;
	clear_sbi_flag(sbi, SBI_NEED_FSCK);