diff options
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/xfs_aops.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_fs_subr.c | 24 | ||||
-rw-r--r-- | fs/xfs/xfs_iops.c | 4 | ||||
-rw-r--r-- | fs/xfs/xfs_vnodeops.c | 7 | ||||
-rw-r--r-- | fs/xfs/xfs_vnodeops.h | 2 |
6 files changed, 9 insertions, 32 deletions
diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c index e57e2daa357c..71361da1f77c 100644 --- a/fs/xfs/xfs_aops.c +++ b/fs/xfs/xfs_aops.c | |||
@@ -1641,7 +1641,7 @@ xfs_vm_bmap( | |||
1641 | 1641 | ||
1642 | trace_xfs_vm_bmap(XFS_I(inode)); | 1642 | trace_xfs_vm_bmap(XFS_I(inode)); |
1643 | xfs_ilock(ip, XFS_IOLOCK_SHARED); | 1643 | xfs_ilock(ip, XFS_IOLOCK_SHARED); |
1644 | xfs_flush_pages(ip, (xfs_off_t)0, -1, 0, FI_REMAPF); | 1644 | filemap_write_and_wait(mapping); |
1645 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); | 1645 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); |
1646 | return generic_block_bmap(mapping, block, xfs_get_blocks); | 1646 | return generic_block_bmap(mapping, block, xfs_get_blocks); |
1647 | } | 1647 | } |
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 83d0cf3df930..a60f3d1f151c 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -5599,7 +5599,7 @@ xfs_getbmap( | |||
5599 | xfs_ilock(ip, XFS_IOLOCK_SHARED); | 5599 | xfs_ilock(ip, XFS_IOLOCK_SHARED); |
5600 | if (whichfork == XFS_DATA_FORK && !(iflags & BMV_IF_DELALLOC)) { | 5600 | if (whichfork == XFS_DATA_FORK && !(iflags & BMV_IF_DELALLOC)) { |
5601 | if (ip->i_delayed_blks || XFS_ISIZE(ip) > ip->i_d.di_size) { | 5601 | if (ip->i_delayed_blks || XFS_ISIZE(ip) > ip->i_d.di_size) { |
5602 | error = xfs_flush_pages(ip, 0, -1, 0, FI_REMAPF); | 5602 | error = -filemap_write_and_wait(VFS_I(ip)->i_mapping); |
5603 | if (error) | 5603 | if (error) |
5604 | goto out_unlock_iolock; | 5604 | goto out_unlock_iolock; |
5605 | } | 5605 | } |
diff --git a/fs/xfs/xfs_fs_subr.c b/fs/xfs/xfs_fs_subr.c index 33658234dfc5..b5380893728e 100644 --- a/fs/xfs/xfs_fs_subr.c +++ b/fs/xfs/xfs_fs_subr.c | |||
@@ -44,27 +44,3 @@ xfs_flushinval_pages( | |||
44 | truncate_inode_pages_range(mapping, first, last); | 44 | truncate_inode_pages_range(mapping, first, last); |
45 | return -ret; | 45 | return -ret; |
46 | } | 46 | } |
47 | |||
48 | int | ||
49 | xfs_flush_pages( | ||
50 | xfs_inode_t *ip, | ||
51 | xfs_off_t first, | ||
52 | xfs_off_t last, | ||
53 | uint64_t flags, | ||
54 | int fiopt) | ||
55 | { | ||
56 | struct address_space *mapping = VFS_I(ip)->i_mapping; | ||
57 | int ret = 0; | ||
58 | int ret2; | ||
59 | |||
60 | xfs_iflags_clear(ip, XFS_ITRUNCATED); | ||
61 | ret = -filemap_fdatawrite_range(mapping, first, | ||
62 | last == -1 ? LLONG_MAX : last); | ||
63 | if (flags & XBF_ASYNC) | ||
64 | return ret; | ||
65 | ret2 = -filemap_fdatawait_range(mapping, first, | ||
66 | last == -1 ? XFS_ISIZE(ip) - 1 : last); | ||
67 | if (!ret) | ||
68 | ret = ret2; | ||
69 | return ret; | ||
70 | } | ||
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 81f5c4953287..d82efaa2ac73 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c | |||
@@ -780,8 +780,8 @@ xfs_setattr_size( | |||
780 | * care about here. | 780 | * care about here. |
781 | */ | 781 | */ |
782 | if (oldsize != ip->i_d.di_size && newsize > ip->i_d.di_size) { | 782 | if (oldsize != ip->i_d.di_size && newsize > ip->i_d.di_size) { |
783 | error = xfs_flush_pages(ip, ip->i_d.di_size, newsize, 0, | 783 | error = -filemap_write_and_wait_range(VFS_I(ip)->i_mapping, |
784 | FI_NONE); | 784 | ip->i_d.di_size, newsize); |
785 | if (error) | 785 | if (error) |
786 | goto out_unlock; | 786 | goto out_unlock; |
787 | } | 787 | } |
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 46a7a5de5d6d..c00326afa7bf 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
@@ -428,8 +428,11 @@ xfs_release( | |||
428 | truncated = xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED); | 428 | truncated = xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED); |
429 | if (truncated) { | 429 | if (truncated) { |
430 | xfs_iflags_clear(ip, XFS_IDIRTY_RELEASE); | 430 | xfs_iflags_clear(ip, XFS_IDIRTY_RELEASE); |
431 | if (VN_DIRTY(VFS_I(ip)) && ip->i_delayed_blks > 0) | 431 | if (VN_DIRTY(VFS_I(ip)) && ip->i_delayed_blks > 0) { |
432 | xfs_flush_pages(ip, 0, -1, XBF_ASYNC, FI_NONE); | 432 | error = -filemap_flush(VFS_I(ip)->i_mapping); |
433 | if (error) | ||
434 | return error; | ||
435 | } | ||
433 | } | 436 | } |
434 | } | 437 | } |
435 | 438 | ||
diff --git a/fs/xfs/xfs_vnodeops.h b/fs/xfs/xfs_vnodeops.h index c8ad48b61a25..73cb3cb15f75 100644 --- a/fs/xfs/xfs_vnodeops.h +++ b/fs/xfs/xfs_vnodeops.h | |||
@@ -50,8 +50,6 @@ int xfs_attr_list(struct xfs_inode *dp, char *buffer, int bufsize, | |||
50 | int flags, struct attrlist_cursor_kern *cursor); | 50 | int flags, struct attrlist_cursor_kern *cursor); |
51 | int xfs_flushinval_pages(struct xfs_inode *ip, xfs_off_t first, | 51 | int xfs_flushinval_pages(struct xfs_inode *ip, xfs_off_t first, |
52 | xfs_off_t last, int fiopt); | 52 | xfs_off_t last, int fiopt); |
53 | int xfs_flush_pages(struct xfs_inode *ip, xfs_off_t first, | ||
54 | xfs_off_t last, uint64_t flags, int fiopt); | ||
55 | 53 | ||
56 | int xfs_zero_eof(struct xfs_inode *, xfs_off_t, xfs_fsize_t); | 54 | int xfs_zero_eof(struct xfs_inode *, xfs_off_t, xfs_fsize_t); |
57 | int xfs_free_eofblocks(struct xfs_mount *, struct xfs_inode *, bool); | 55 | int xfs_free_eofblocks(struct xfs_mount *, struct xfs_inode *, bool); |