]>
Commit | Line | Data |
---|---|---|
a65d4bac GKH |
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: |