aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/linux-2.6/xfs_aops.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_aops.c')
-rw-r--r--fs/xfs/linux-2.6/xfs_aops.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c
index 3e807b828e22..09360cf1e1f2 100644
--- a/fs/xfs/linux-2.6/xfs_aops.c
+++ b/fs/xfs/linux-2.6/xfs_aops.c
@@ -71,7 +71,7 @@ xfs_page_trace(
71 int tag, 71 int tag,
72 struct inode *inode, 72 struct inode *inode,
73 struct page *page, 73 struct page *page,
74 int mask) 74 unsigned long pgoff)
75{ 75{
76 xfs_inode_t *ip; 76 xfs_inode_t *ip;
77 bhv_vnode_t *vp = vn_from_inode(inode); 77 bhv_vnode_t *vp = vn_from_inode(inode);
@@ -91,7 +91,7 @@ xfs_page_trace(
91 (void *)ip, 91 (void *)ip,
92 (void *)inode, 92 (void *)inode,
93 (void *)page, 93 (void *)page,
94 (void *)((unsigned long)mask), 94 (void *)pgoff,
95 (void *)((unsigned long)((ip->i_d.di_size >> 32) & 0xffffffff)), 95 (void *)((unsigned long)((ip->i_d.di_size >> 32) & 0xffffffff)),
96 (void *)((unsigned long)(ip->i_d.di_size & 0xffffffff)), 96 (void *)((unsigned long)(ip->i_d.di_size & 0xffffffff)),
97 (void *)((unsigned long)((isize >> 32) & 0xffffffff)), 97 (void *)((unsigned long)((isize >> 32) & 0xffffffff)),
@@ -105,7 +105,7 @@ xfs_page_trace(
105 (void *)NULL); 105 (void *)NULL);
106} 106}
107#else 107#else
108#define xfs_page_trace(tag, inode, page, mask) 108#define xfs_page_trace(tag, inode, page, pgoff)
109#endif 109#endif
110 110
111/* 111/*
@@ -1197,7 +1197,7 @@ xfs_vm_releasepage(
1197 .nr_to_write = 1, 1197 .nr_to_write = 1,
1198 }; 1198 };
1199 1199
1200 xfs_page_trace(XFS_RELEASEPAGE_ENTER, inode, page, gfp_mask); 1200 xfs_page_trace(XFS_RELEASEPAGE_ENTER, inode, page, 0);
1201 1201
1202 if (!page_has_buffers(page)) 1202 if (!page_has_buffers(page))
1203 return 0; 1203 return 0;
@@ -1356,7 +1356,6 @@ xfs_end_io_direct(
1356 ioend->io_size = size; 1356 ioend->io_size = size;
1357 xfs_finish_ioend(ioend); 1357 xfs_finish_ioend(ioend);
1358 } else { 1358 } else {
1359 ASSERT(size >= 0);
1360 xfs_destroy_ioend(ioend); 1359 xfs_destroy_ioend(ioend);
1361 } 1360 }
1362 1361
@@ -1390,11 +1389,19 @@ xfs_vm_direct_IO(
1390 1389
1391 iocb->private = xfs_alloc_ioend(inode, IOMAP_UNWRITTEN); 1390 iocb->private = xfs_alloc_ioend(inode, IOMAP_UNWRITTEN);
1392 1391
1393 ret = blockdev_direct_IO_own_locking(rw, iocb, inode, 1392 if (rw == WRITE) {
1394 iomap.iomap_target->bt_bdev, 1393 ret = blockdev_direct_IO_own_locking(rw, iocb, inode,
1395 iov, offset, nr_segs, 1394 iomap.iomap_target->bt_bdev,
1396 xfs_get_blocks_direct, 1395 iov, offset, nr_segs,
1397 xfs_end_io_direct); 1396 xfs_get_blocks_direct,
1397 xfs_end_io_direct);
1398 } else {
1399 ret = blockdev_direct_IO_no_locking(rw, iocb, inode,
1400 iomap.iomap_target->bt_bdev,
1401 iov, offset, nr_segs,
1402 xfs_get_blocks_direct,
1403 xfs_end_io_direct);
1404 }
1398 1405
1399 if (unlikely(ret <= 0 && iocb->private)) 1406 if (unlikely(ret <= 0 && iocb->private))
1400 xfs_destroy_ioend(iocb->private); 1407 xfs_destroy_ioend(iocb->private);
@@ -1454,7 +1461,7 @@ xfs_vm_invalidatepage(
1454 block_invalidatepage(page, offset); 1461 block_invalidatepage(page, offset);
1455} 1462}
1456 1463
1457struct address_space_operations xfs_address_space_operations = { 1464const struct address_space_operations xfs_address_space_operations = {
1458 .readpage = xfs_vm_readpage, 1465 .readpage = xfs_vm_readpage,
1459 .readpages = xfs_vm_readpages, 1466 .readpages = xfs_vm_readpages,
1460 .writepage = xfs_vm_writepage, 1467 .writepage = xfs_vm_writepage,