diff options
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_file.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c index cbcd40c8c2a0..b4c936485d11 100644 --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c | |||
@@ -413,6 +413,20 @@ xfs_file_open_exec( | |||
413 | } | 413 | } |
414 | #endif /* HAVE_FOP_OPEN_EXEC */ | 414 | #endif /* HAVE_FOP_OPEN_EXEC */ |
415 | 415 | ||
416 | /* | ||
417 | * mmap()d file has taken write protection fault and is being made | ||
418 | * writable. We can set the page state up correctly for a writable | ||
419 | * page, which means we can do correct delalloc accounting (ENOSPC | ||
420 | * checking!) and unwritten extent mapping. | ||
421 | */ | ||
422 | STATIC int | ||
423 | xfs_vm_page_mkwrite( | ||
424 | struct vm_area_struct *vma, | ||
425 | struct page *page) | ||
426 | { | ||
427 | return block_page_mkwrite(vma, page, xfs_get_blocks); | ||
428 | } | ||
429 | |||
416 | const struct file_operations xfs_file_operations = { | 430 | const struct file_operations xfs_file_operations = { |
417 | .llseek = generic_file_llseek, | 431 | .llseek = generic_file_llseek, |
418 | .read = do_sync_read, | 432 | .read = do_sync_read, |
@@ -466,12 +480,14 @@ const struct file_operations xfs_dir_file_operations = { | |||
466 | static struct vm_operations_struct xfs_file_vm_ops = { | 480 | static struct vm_operations_struct xfs_file_vm_ops = { |
467 | .nopage = filemap_nopage, | 481 | .nopage = filemap_nopage, |
468 | .populate = filemap_populate, | 482 | .populate = filemap_populate, |
483 | .page_mkwrite = xfs_vm_page_mkwrite, | ||
469 | }; | 484 | }; |
470 | 485 | ||
471 | #ifdef CONFIG_XFS_DMAPI | 486 | #ifdef CONFIG_XFS_DMAPI |
472 | static struct vm_operations_struct xfs_dmapi_file_vm_ops = { | 487 | static struct vm_operations_struct xfs_dmapi_file_vm_ops = { |
473 | .nopage = xfs_vm_nopage, | 488 | .nopage = xfs_vm_nopage, |
474 | .populate = filemap_populate, | 489 | .populate = filemap_populate, |
490 | .page_mkwrite = xfs_vm_page_mkwrite, | ||
475 | #ifdef HAVE_VMOP_MPROTECT | 491 | #ifdef HAVE_VMOP_MPROTECT |
476 | .mprotect = xfs_vm_mprotect, | 492 | .mprotect = xfs_vm_mprotect, |
477 | #endif | 493 | #endif |