@@ -258,32 +258,19 @@ ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
258258static int ext4_dax_fault (struct vm_area_struct * vma , struct vm_fault * vmf )
259259{
260260 int result ;
261- handle_t * handle = NULL ;
262261 struct inode * inode = file_inode (vma -> vm_file );
263262 struct super_block * sb = inode -> i_sb ;
264263 bool write = vmf -> flags & FAULT_FLAG_WRITE ;
265264
266265 if (write ) {
267266 sb_start_pagefault (sb );
268267 file_update_time (vma -> vm_file );
269- down_read (& EXT4_I (inode )-> i_mmap_sem );
270- handle = ext4_journal_start_sb (sb , EXT4_HT_WRITE_PAGE ,
271- EXT4_DATA_TRANS_BLOCKS (sb ));
272- } else
273- down_read (& EXT4_I (inode )-> i_mmap_sem );
274-
275- if (IS_ERR (handle ))
276- result = VM_FAULT_SIGBUS ;
277- else
278- result = dax_iomap_fault (vma , vmf , & ext4_iomap_ops );
279-
280- if (write ) {
281- if (!IS_ERR (handle ))
282- ext4_journal_stop (handle );
283- up_read (& EXT4_I (inode )-> i_mmap_sem );
268+ }
269+ down_read (& EXT4_I (inode )-> i_mmap_sem );
270+ result = dax_iomap_fault (vma , vmf , & ext4_iomap_ops );
271+ up_read (& EXT4_I (inode )-> i_mmap_sem );
272+ if (write )
284273 sb_end_pagefault (sb );
285- } else
286- up_read (& EXT4_I (inode )-> i_mmap_sem );
287274
288275 return result ;
289276}
@@ -292,35 +279,20 @@ static int ext4_dax_pmd_fault(struct vm_area_struct *vma, unsigned long addr,
292279 pmd_t * pmd , unsigned int flags )
293280{
294281 int result ;
295- handle_t * handle = NULL ;
296282 struct inode * inode = file_inode (vma -> vm_file );
297283 struct super_block * sb = inode -> i_sb ;
298284 bool write = flags & FAULT_FLAG_WRITE ;
299285
300286 if (write ) {
301287 sb_start_pagefault (sb );
302288 file_update_time (vma -> vm_file );
303- down_read (& EXT4_I (inode )-> i_mmap_sem );
304- handle = ext4_journal_start_sb (sb , EXT4_HT_WRITE_PAGE ,
305- ext4_chunk_trans_blocks (inode ,
306- PMD_SIZE / PAGE_SIZE ));
307- } else
308- down_read (& EXT4_I (inode )-> i_mmap_sem );
309-
310- if (IS_ERR (handle ))
311- result = VM_FAULT_SIGBUS ;
312- else {
313- result = dax_iomap_pmd_fault (vma , addr , pmd , flags ,
314- & ext4_iomap_ops );
315289 }
316-
317- if ( write ) {
318- if (! IS_ERR ( handle ))
319- ext4_journal_stop ( handle );
320- up_read ( & EXT4_I ( inode ) -> i_mmap_sem );
290+ down_read ( & EXT4_I ( inode ) -> i_mmap_sem );
291+ result = dax_iomap_pmd_fault ( vma , addr , pmd , flags ,
292+ & ext4_iomap_ops );
293+ up_read ( & EXT4_I ( inode ) -> i_mmap_sem );
294+ if ( write )
321295 sb_end_pagefault (sb );
322- } else
323- up_read (& EXT4_I (inode )-> i_mmap_sem );
324296
325297 return result ;
326298}
0 commit comments