ocfs2: Use filemap_write_and_wait_range() in ocfs2_cow_sync_writeback()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 27 May 2022 15:29:24 +0000 (11:29 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 2 Aug 2022 16:34:02 +0000 (12:34 -0400)
Remove the open-coding of filemap_fdatawait_range().

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
fs/ocfs2/refcounttree.c

index e04358a46b68059c3407139b64a0dc133035ccee..1358981e80a36597660a54d9ec53edd4433abae7 100644 (file)
@@ -3146,48 +3146,18 @@ int ocfs2_cow_sync_writeback(struct super_block *sb,
                             struct inode *inode,
                             u32 cpos, u32 num_clusters)
 {
-       int ret = 0;
-       loff_t offset, end, map_end;
-       pgoff_t page_index;
-       struct page *page;
+       int ret;
+       loff_t start, end;
 
        if (ocfs2_should_order_data(inode))
                return 0;
 
-       offset = ((loff_t)cpos) << OCFS2_SB(sb)->s_clustersize_bits;
-       end = offset + (num_clusters << OCFS2_SB(sb)->s_clustersize_bits);
+       start = ((loff_t)cpos) << OCFS2_SB(sb)->s_clustersize_bits;
+       end = start + (num_clusters << OCFS2_SB(sb)->s_clustersize_bits) - 1;
 
-       ret = filemap_fdatawrite_range(inode->i_mapping,
-                                      offset, end - 1);
-       if (ret < 0) {
+       ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
+       if (ret < 0)
                mlog_errno(ret);
-               return ret;
-       }
-
-       while (offset < end) {
-               page_index = offset >> PAGE_SHIFT;
-               map_end = ((loff_t)page_index + 1) << PAGE_SHIFT;
-               if (map_end > end)
-                       map_end = end;
-
-               page = find_or_create_page(inode->i_mapping,
-                                          page_index, GFP_NOFS);
-               BUG_ON(!page);
-
-               wait_on_page_writeback(page);
-               if (PageError(page)) {
-                       ret = -EIO;
-                       mlog_errno(ret);
-               } else
-                       mark_page_accessed(page);
-
-               unlock_page(page);
-               put_page(page);
-               page = NULL;
-               offset = map_end;
-               if (ret)
-                       break;
-       }
 
        return ret;
 }