xfs: use MMAPLOCK around filemap_map_pages()
[linux-2.6-microblaze.git] / fs / xfs / xfs_file.c
index 97aa748..cc65287 100644 (file)
@@ -1263,10 +1263,23 @@ xfs_filemap_pfn_mkwrite(
        return __xfs_filemap_fault(vmf, PE_SIZE_PTE, true);
 }
 
+static void
+xfs_filemap_map_pages(
+       struct vm_fault         *vmf,
+       pgoff_t                 start_pgoff,
+       pgoff_t                 end_pgoff)
+{
+       struct inode            *inode = file_inode(vmf->vma->vm_file);
+
+       xfs_ilock(XFS_I(inode), XFS_MMAPLOCK_SHARED);
+       filemap_map_pages(vmf, start_pgoff, end_pgoff);
+       xfs_iunlock(XFS_I(inode), XFS_MMAPLOCK_SHARED);
+}
+
 static const struct vm_operations_struct xfs_file_vm_ops = {
        .fault          = xfs_filemap_fault,
        .huge_fault     = xfs_filemap_huge_fault,
-       .map_pages      = filemap_map_pages,
+       .map_pages      = xfs_filemap_map_pages,
        .page_mkwrite   = xfs_filemap_page_mkwrite,
        .pfn_mkwrite    = xfs_filemap_pfn_mkwrite,
 };