]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.14.60/f2fs-fix-error-path-of-move_data_page.patch
Fixes for 4.19
[thirdparty/kernel/stable-queue.git] / releases / 4.14.60 / f2fs-fix-error-path-of-move_data_page.patch
1 From foo@baz Sat Jul 28 10:25:26 CEST 2018
2 From: Chao Yu <yuchao0@huawei.com>
3 Date: Mon, 28 May 2018 16:59:27 +0800
4 Subject: f2fs: fix error path of move_data_page
5
6 From: Chao Yu <yuchao0@huawei.com>
7
8 [ Upstream commit 14a28559f43ac7c0b98dd1b0e73ec9ec8ab4fc45 ]
9
10 This patch fixes error path of move_data_page:
11 - clear cold data flag if it fails to write page.
12 - redirty page for non-ENOMEM case.
13
14 Signed-off-by: Chao Yu <yuchao0@huawei.com>
15 Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
16 Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
17 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18 ---
19 fs/f2fs/gc.c | 11 ++++++++---
20 1 file changed, 8 insertions(+), 3 deletions(-)
21
22 --- a/fs/f2fs/gc.c
23 +++ b/fs/f2fs/gc.c
24 @@ -768,9 +768,14 @@ retry:
25 set_cold_data(page);
26
27 err = do_write_data_page(&fio);
28 - if (err == -ENOMEM && is_dirty) {
29 - congestion_wait(BLK_RW_ASYNC, HZ/50);
30 - goto retry;
31 + if (err) {
32 + clear_cold_data(page);
33 + if (err == -ENOMEM) {
34 + congestion_wait(BLK_RW_ASYNC, HZ/50);
35 + goto retry;
36 + }
37 + if (is_dirty)
38 + set_page_dirty(page);
39 }
40 }
41 out: