ocfs2: Use do_sync_mapping_range() in ocfs2_zero_tail_for_truncate()
authorMark Fasheh <mark.fasheh@oracle.com>
Thu, 1 Mar 2007 19:22:19 +0000 (11:22 -0800)
committerMark Fasheh <mark.fasheh@oracle.com>
Thu, 26 Apr 2007 22:02:30 +0000 (15:02 -0700)
Do this instead of filemap_fdatawrite() - this way we sync only the
range between i_size and the cluster boundary.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
fs/ocfs2/alloc.c

index 98694a1..027cf5d 100644 (file)
@@ -3517,6 +3517,7 @@ int ocfs2_zero_tail_for_truncate(struct inode *inode, handle_t *handle,
                                 u64 new_i_size)
 {
        int ret, numpages;
+       loff_t endbyte;
        struct page **pages = NULL;
        u64 phys;
 
@@ -3555,7 +3556,9 @@ int ocfs2_zero_tail_for_truncate(struct inode *inode, handle_t *handle,
         * wait on them - the truncate_inode_pages() call later will
         * do that for us.
         */
-       ret = filemap_fdatawrite(inode->i_mapping);
+       endbyte = ocfs2_align_bytes_to_clusters(inode->i_sb, new_i_size);
+       ret = do_sync_mapping_range(inode->i_mapping, new_i_size,
+                                   endbyte - 1, SYNC_FILE_RANGE_WRITE);
        if (ret)
                mlog_errno(ret);