diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/md/bitmap.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index f197db2ef92d..9462fdd517c0 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c | |||
@@ -350,8 +350,7 @@ int bitmap_update_sb(struct bitmap *bitmap) | |||
350 | if (!bitmap->mddev->degraded) | 350 | if (!bitmap->mddev->degraded) |
351 | sb->events_cleared = cpu_to_le64(bitmap->mddev->events); | 351 | sb->events_cleared = cpu_to_le64(bitmap->mddev->events); |
352 | kunmap(bitmap->sb_page); | 352 | kunmap(bitmap->sb_page); |
353 | write_page(bitmap->sb_page, 0); | 353 | return write_page(bitmap->sb_page, 0); |
354 | return 0; | ||
355 | } | 354 | } |
356 | 355 | ||
357 | /* print out the bitmap file superblock */ | 356 | /* print out the bitmap file superblock */ |
@@ -735,7 +734,8 @@ int bitmap_unplug(struct bitmap *bitmap) | |||
735 | spin_unlock_irqrestore(&bitmap->lock, flags); | 734 | spin_unlock_irqrestore(&bitmap->lock, flags); |
736 | 735 | ||
737 | if (attr & (BITMAP_PAGE_DIRTY | BITMAP_PAGE_NEEDWRITE)) | 736 | if (attr & (BITMAP_PAGE_DIRTY | BITMAP_PAGE_NEEDWRITE)) |
738 | write_page(page, 0); | 737 | if (write_page(page, 0)) |
738 | return 1; | ||
739 | } | 739 | } |
740 | if (wait) { /* if any writes were performed, we need to wait on them */ | 740 | if (wait) { /* if any writes were performed, we need to wait on them */ |
741 | spin_lock_irq(&bitmap->write_lock); | 741 | spin_lock_irq(&bitmap->write_lock); |
@@ -950,7 +950,7 @@ int bitmap_daemon_work(struct bitmap *bitmap) | |||
950 | if (get_page_attr(bitmap, lastpage) & BITMAP_PAGE_NEEDWRITE) { | 950 | if (get_page_attr(bitmap, lastpage) & BITMAP_PAGE_NEEDWRITE) { |
951 | clear_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | 951 | clear_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); |
952 | spin_unlock_irqrestore(&bitmap->lock, flags); | 952 | spin_unlock_irqrestore(&bitmap->lock, flags); |
953 | write_page(lastpage, 0); | 953 | err = write_page(lastpage, 0); |
954 | } else { | 954 | } else { |
955 | set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | 955 | set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); |
956 | spin_unlock_irqrestore(&bitmap->lock, flags); | 956 | spin_unlock_irqrestore(&bitmap->lock, flags); |
@@ -998,7 +998,7 @@ int bitmap_daemon_work(struct bitmap *bitmap) | |||
998 | if (get_page_attr(bitmap, lastpage) &BITMAP_PAGE_NEEDWRITE) { | 998 | if (get_page_attr(bitmap, lastpage) &BITMAP_PAGE_NEEDWRITE) { |
999 | clear_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | 999 | clear_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); |
1000 | spin_unlock_irqrestore(&bitmap->lock, flags); | 1000 | spin_unlock_irqrestore(&bitmap->lock, flags); |
1001 | write_page(lastpage, 0); | 1001 | err = write_page(lastpage, 0); |
1002 | } else { | 1002 | } else { |
1003 | set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); | 1003 | set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE); |
1004 | spin_unlock_irqrestore(&bitmap->lock, flags); | 1004 | spin_unlock_irqrestore(&bitmap->lock, flags); |
@@ -1375,7 +1375,8 @@ int bitmap_setallbits(struct bitmap *bitmap) | |||
1375 | spin_unlock_irqrestore(&bitmap->lock, flags); | 1375 | spin_unlock_irqrestore(&bitmap->lock, flags); |
1376 | memset(kmap(page), 0xff, PAGE_SIZE); | 1376 | memset(kmap(page), 0xff, PAGE_SIZE); |
1377 | kunmap(page); | 1377 | kunmap(page); |
1378 | write_page(page, 0); | 1378 | if (write_page(page, 0)) |
1379 | return 1; | ||
1379 | } | 1380 | } |
1380 | 1381 | ||
1381 | return 0; | 1382 | return 0; |