File tree Expand file tree Collapse file tree 1 file changed +6
-36
lines changed Expand file tree Collapse file tree 1 file changed +6
-36
lines changed Original file line number Diff line number Diff line change @@ -3146,48 +3146,18 @@ int ocfs2_cow_sync_writeback(struct super_block *sb,
3146
3146
struct inode * inode ,
3147
3147
u32 cpos , u32 num_clusters )
3148
3148
{
3149
- int ret = 0 ;
3150
- loff_t offset , end , map_end ;
3151
- pgoff_t page_index ;
3152
- struct page * page ;
3149
+ int ret ;
3150
+ loff_t start , end ;
3153
3151
3154
3152
if (ocfs2_should_order_data (inode ))
3155
3153
return 0 ;
3156
3154
3157
- offset = ((loff_t )cpos ) << OCFS2_SB (sb )-> s_clustersize_bits ;
3158
- end = offset + (num_clusters << OCFS2_SB (sb )-> s_clustersize_bits );
3155
+ start = ((loff_t )cpos ) << OCFS2_SB (sb )-> s_clustersize_bits ;
3156
+ end = start + (num_clusters << OCFS2_SB (sb )-> s_clustersize_bits ) - 1 ;
3159
3157
3160
- ret = filemap_fdatawrite_range (inode -> i_mapping ,
3161
- offset , end - 1 );
3162
- if (ret < 0 ) {
3158
+ ret = filemap_write_and_wait_range (inode -> i_mapping , start , end );
3159
+ if (ret < 0 )
3163
3160
mlog_errno (ret );
3164
- return ret ;
3165
- }
3166
-
3167
- while (offset < end ) {
3168
- page_index = offset >> PAGE_SHIFT ;
3169
- map_end = ((loff_t )page_index + 1 ) << PAGE_SHIFT ;
3170
- if (map_end > end )
3171
- map_end = end ;
3172
-
3173
- page = find_or_create_page (inode -> i_mapping ,
3174
- page_index , GFP_NOFS );
3175
- BUG_ON (!page );
3176
-
3177
- wait_on_page_writeback (page );
3178
- if (PageError (page )) {
3179
- ret = - EIO ;
3180
- mlog_errno (ret );
3181
- } else
3182
- mark_page_accessed (page );
3183
-
3184
- unlock_page (page );
3185
- put_page (page );
3186
- page = NULL ;
3187
- offset = map_end ;
3188
- if (ret )
3189
- break ;
3190
- }
3191
3161
3192
3162
return ret ;
3193
3163
}
You can’t perform that action at this time.
0 commit comments