diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_aops.c')
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 29 |
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 | ||
| 1457 | struct address_space_operations xfs_address_space_operations = { | 1464 | const 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, |
