@@ -258,32 +258,19 @@ ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
258
258
static int ext4_dax_fault (struct vm_area_struct * vma , struct vm_fault * vmf )
259
259
{
260
260
int result ;
261
- handle_t * handle = NULL ;
262
261
struct inode * inode = file_inode (vma -> vm_file );
263
262
struct super_block * sb = inode -> i_sb ;
264
263
bool write = vmf -> flags & FAULT_FLAG_WRITE ;
265
264
266
265
if (write ) {
267
266
sb_start_pagefault (sb );
268
267
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 )
284
273
sb_end_pagefault (sb );
285
- } else
286
- up_read (& EXT4_I (inode )-> i_mmap_sem );
287
274
288
275
return result ;
289
276
}
@@ -292,35 +279,20 @@ static int ext4_dax_pmd_fault(struct vm_area_struct *vma, unsigned long addr,
292
279
pmd_t * pmd , unsigned int flags )
293
280
{
294
281
int result ;
295
- handle_t * handle = NULL ;
296
282
struct inode * inode = file_inode (vma -> vm_file );
297
283
struct super_block * sb = inode -> i_sb ;
298
284
bool write = flags & FAULT_FLAG_WRITE ;
299
285
300
286
if (write ) {
301
287
sb_start_pagefault (sb );
302
288
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 );
315
289
}
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 )
321
295
sb_end_pagefault (sb );
322
- } else
323
- up_read (& EXT4_I (inode )-> i_mmap_sem );
324
296
325
297
return result ;
326
298
}
0 commit comments