From: Daeho Jeong <daehoje...@google.com>

Use the finish zone command first when a zone should be closed.

Signed-off-by: Daeho Jeong <daehoje...@google.com>
---
 fs/f2fs/segment.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index b38bf2b34490..d05b41608fc0 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -4948,12 +4948,19 @@ static int check_zone_write_pointer(struct f2fs_sb_info 
*sbi,
                    GET_BLKOFF_FROM_SEG0(sbi, last_valid_block),
                    wp_segno, wp_blkoff);
 
-       ret = blkdev_issue_zeroout(fdev->bdev, zone->wp,
-                               zone->len - (zone->wp - zone->start),
-                               GFP_NOFS, 0);
-       if (ret)
-               f2fs_err(sbi, "Fill up zone failed: %s (errno=%d)",
-                        fdev->path, ret);
+       ret = blkdev_zone_mgmt(fdev->bdev, REQ_OP_ZONE_FINISH,
+                               zone->start, zone->len, GFP_NOFS);
+       if (ret == -EOPNOTSUPP) {
+               ret = blkdev_issue_zeroout(fdev->bdev, zone->wp,
+                                       zone->len - (zone->wp - zone->start),
+                                       GFP_NOFS, 0);
+               if (ret)
+                       f2fs_err(sbi, "Fill up zone failed: %s (errno=%d)",
+                                       fdev->path, ret);
+       } else if (ret) {
+               f2fs_err(sbi, "Finishing zone failed: %s (errno=%d)",
+                               fdev->path, ret);
+       }
 
        return ret;
 }
-- 
2.42.0.rc1.204.g551eb34607-goog



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to