Commit 6fa11605 authored by Chao Yu's avatar Chao Yu Committed by Jaegeuk Kim
Browse files

f2fs: fix timeout precision of f2fs_io_schedule_timeout_killable()



Sometimes, f2fs_io_schedule_timeout_killable(HZ) may delay for about 2
seconds, this is because __f2fs_schedule_timeout(DEFAULT_SCHEDULE_TIMEOUT)
may delay for about 2 * DEFAULT_SCHEDULE_TIMEOUT due to its precision, but
we only account the delay as DEFAULT_SCHEDULE_TIMEOUT as below, fix it.

f2fs_io_schedule_timeout_killable()
..
	timeout -= DEFAULT_SCHEDULE_TIMEOUT;

Signed-off-by: default avatarChao Yu <chao@kernel.org>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent da90b671
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -4985,13 +4985,12 @@ static inline void __f2fs_schedule_timeout(long timeout, bool io)

static inline void f2fs_io_schedule_timeout_killable(long timeout)
{
	while (timeout) {
	unsigned long last_time = jiffies + timeout;

	while (jiffies < last_time) {
		if (fatal_signal_pending(current))
			return;
		__f2fs_schedule_timeout(DEFAULT_SCHEDULE_TIMEOUT, true);
		if (timeout <= DEFAULT_SCHEDULE_TIMEOUT)
			return;
		timeout -= DEFAULT_SCHEDULE_TIMEOUT;
	}
}