1 From foo@baz Sat Jul 28 10:25:26 CEST 2018
2 From: Jaegeuk Kim <jaegeuk@kernel.org>
3 Date: Thu, 3 May 2018 23:26:02 -0700
4 Subject: f2fs: avoid fsync() failure caused by EAGAIN in writepage()
6 From: Jaegeuk Kim <jaegeuk@kernel.org>
8 [ Upstream commit 5b19d284f5195a925dd015a6397bfce184097378 ]
10 pageout() in MM traslates EAGAIN, so calls handle_write_error()
11 -> mapping_set_error() -> set_bit(AS_EIO, ...).
12 file_write_and_wait_range() will see EIO error, which is critical
13 to return value of fsync() followed by atomic_write failure to user.
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>
19 fs/f2fs/data.c | 8 +++++++-
20 1 file changed, 7 insertions(+), 1 deletion(-)
24 @@ -1601,7 +1601,13 @@ out:
27 redirty_page_for_writepage(wbc, page);
30 + * pageout() in MM traslates EAGAIN, so calls handle_write_error()
31 + * -> mapping_set_error() -> set_bit(AS_EIO, ...).
32 + * file_write_and_wait_range() will see EIO error, which is critical
33 + * to return value of fsync() followed by atomic_write failure to user.
35 + if (!err || wbc->for_reclaim)
36 return AOP_WRITEPAGE_ACTIVATE;