md-bitmap: set BITMAP_WRITE_ERROR in write_sb_page
authorChristoph Hellwig <hch@lst.de>
Thu, 15 Jun 2023 06:48:30 +0000 (08:48 +0200)
committerSong Liu <song@kernel.org>
Thu, 27 Jul 2023 07:13:29 +0000 (00:13 -0700)
Set BITMAP_WRITE_ERROR directly in write_sb_page instead of propagating
the error to the caller and setting it there.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230615064840.629492-2-hch@lst.de
drivers/md/md-bitmap.c

index 1ff712889a3b369a1783383621a09625d79dcf83..d8469720fac23f7b82252be12f2cdb3236f106c2 100644 (file)
@@ -279,22 +279,20 @@ static int __write_sb_page(struct md_rdev *rdev, struct bitmap *bitmap,
        return 0;
 }
 
-static int write_sb_page(struct bitmap *bitmap, struct page *page, int wait)
+static void write_sb_page(struct bitmap *bitmap, struct page *page, int wait)
 {
-       struct md_rdev *rdev;
        struct mddev *mddev = bitmap->mddev;
-       int ret;
 
        do {
-               rdev = NULL;
+               struct md_rdev *rdev = NULL;
+
                while ((rdev = next_active_rdev(rdev, mddev)) != NULL) {
-                       ret = __write_sb_page(rdev, bitmap, page);
-                       if (ret)
-                               return ret;
+                       if (__write_sb_page(rdev, bitmap, page) < 0) {
+                               set_bit(BITMAP_WRITE_ERROR, &bitmap->flags);
+                               return;
+                       }
                }
        } while (wait && md_super_wait(mddev) < 0);
-
-       return 0;
 }
 
 static void md_bitmap_file_kick(struct bitmap *bitmap);
@@ -306,10 +304,7 @@ static void write_page(struct bitmap *bitmap, struct page *page, int wait)
        struct buffer_head *bh;
 
        if (bitmap->storage.file == NULL) {
-               switch (write_sb_page(bitmap, page, wait)) {
-               case -EINVAL:
-                       set_bit(BITMAP_WRITE_ERROR, &bitmap->flags);
-               }
+               write_sb_page(bitmap, page, wait);
        } else {
 
                bh = page_buffers(page);