aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/xfs_iomap.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index afcf3c926565..3fad07136c5d 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -52,7 +52,6 @@ xfs_iomap_eof_align_last_fsb(
52 xfs_extlen_t extsize, 52 xfs_extlen_t extsize,
53 xfs_fileoff_t *last_fsb) 53 xfs_fileoff_t *last_fsb)
54{ 54{
55 xfs_fileoff_t new_last_fsb = 0;
56 xfs_extlen_t align = 0; 55 xfs_extlen_t align = 0;
57 int eof, error; 56 int eof, error;
58 57
@@ -70,8 +69,8 @@ xfs_iomap_eof_align_last_fsb(
70 else if (mp->m_dalign) 69 else if (mp->m_dalign)
71 align = mp->m_dalign; 70 align = mp->m_dalign;
72 71
73 if (align && XFS_ISIZE(ip) >= XFS_FSB_TO_B(mp, align)) 72 if (align && XFS_ISIZE(ip) < XFS_FSB_TO_B(mp, align))
74 new_last_fsb = roundup_64(*last_fsb, align); 73 align = 0;
75 } 74 }
76 75
77 /* 76 /*
@@ -79,14 +78,14 @@ xfs_iomap_eof_align_last_fsb(
79 * (when file on a real-time subvolume or has di_extsize hint). 78 * (when file on a real-time subvolume or has di_extsize hint).
80 */ 79 */
81 if (extsize) { 80 if (extsize) {
82 if (new_last_fsb) 81 if (align)
83 align = roundup_64(new_last_fsb, extsize); 82 align = roundup_64(align, extsize);
84 else 83 else
85 align = extsize; 84 align = extsize;
86 new_last_fsb = roundup_64(*last_fsb, align);
87 } 85 }
88 86
89 if (new_last_fsb) { 87 if (align) {
88 xfs_fileoff_t new_last_fsb = roundup_64(*last_fsb, align);
90 error = xfs_bmap_eof(ip, new_last_fsb, XFS_DATA_FORK, &eof); 89 error = xfs_bmap_eof(ip, new_last_fsb, XFS_DATA_FORK, &eof);
91 if (error) 90 if (error)
92 return error; 91 return error;