We should only align start offset of bio with defined IO_SIZE for below
conditions:
a. write IOs
b. Out-place-update
c. non-meta page

Signed-off-by: Chao Yu <[email protected]>
---
 fs/f2fs/data.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 1375fef11146..3e6b0cc5e36a 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -395,7 +395,9 @@ int f2fs_submit_page_mbio(struct f2fs_io_info *fio)
                __submit_merged_bio(io);
 alloc_new:
        if (io->bio == NULL) {
-               if ((fio->type == DATA || fio->type == NODE) &&
+               if (!is_read && (fio->type == DATA || fio->type == NODE) &&
+                               bio_page->mapping != META_MAPPING(sbi) &&
+                               fio->new_blkaddr != fio->old_blkaddr &&
                                fio->new_blkaddr & F2FS_IO_SIZE_MASK(sbi)) {
                        err = -EAGAIN;
                        if (!is_read)
-- 
2.8.2.295.g3f1c1d0

Reply via email to