diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index f1dd70e201cf..6feecd279470 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
@@ -329,17 +329,15 @@ xfs_map_blocks( | |||
329 | } | 329 | } |
330 | 330 | ||
331 | STATIC int | 331 | STATIC int |
332 | xfs_iomap_valid( | 332 | xfs_imap_valid( |
333 | struct inode *inode, | 333 | struct inode *inode, |
334 | struct xfs_bmbt_irec *imap, | 334 | struct xfs_bmbt_irec *imap, |
335 | loff_t offset) | 335 | xfs_off_t offset) |
336 | { | 336 | { |
337 | struct xfs_mount *mp = XFS_I(inode)->i_mount; | 337 | offset >>= inode->i_blkbits; |
338 | xfs_off_t iomap_offset = XFS_FSB_TO_B(mp, imap->br_startoff); | ||
339 | xfs_off_t iomap_bsize = XFS_FSB_TO_B(mp, imap->br_blockcount); | ||
340 | 338 | ||
341 | return offset >= iomap_offset && | 339 | return offset >= imap->br_startoff && |
342 | offset < iomap_offset + iomap_bsize; | 340 | offset < imap->br_startoff + imap->br_blockcount; |
343 | } | 341 | } |
344 | 342 | ||
345 | /* | 343 | /* |
@@ -825,7 +823,7 @@ xfs_convert_page( | |||
825 | else | 823 | else |
826 | type = IO_DELAY; | 824 | type = IO_DELAY; |
827 | 825 | ||
828 | if (!xfs_iomap_valid(inode, imap, offset)) { | 826 | if (!xfs_imap_valid(inode, imap, offset)) { |
829 | done = 1; | 827 | done = 1; |
830 | continue; | 828 | continue; |
831 | } | 829 | } |
@@ -1069,7 +1067,7 @@ xfs_page_state_convert( | |||
1069 | __uint64_t end_offset; | 1067 | __uint64_t end_offset; |
1070 | pgoff_t end_index, last_index, tlast; | 1068 | pgoff_t end_index, last_index, tlast; |
1071 | ssize_t size, len; | 1069 | ssize_t size, len; |
1072 | int flags, err, iomap_valid = 0, uptodate = 1; | 1070 | int flags, err, imap_valid = 0, uptodate = 1; |
1073 | int page_dirty, count = 0; | 1071 | int page_dirty, count = 0; |
1074 | int trylock = 0; | 1072 | int trylock = 0; |
1075 | int all_bh = unmapped; | 1073 | int all_bh = unmapped; |
@@ -1130,12 +1128,12 @@ xfs_page_state_convert( | |||
1130 | * the iomap is actually still valid, but the ioend | 1128 | * the iomap is actually still valid, but the ioend |
1131 | * isn't. shouldn't happen too often. | 1129 | * isn't. shouldn't happen too often. |
1132 | */ | 1130 | */ |
1133 | iomap_valid = 0; | 1131 | imap_valid = 0; |
1134 | continue; | 1132 | continue; |
1135 | } | 1133 | } |
1136 | 1134 | ||
1137 | if (iomap_valid) | 1135 | if (imap_valid) |
1138 | iomap_valid = xfs_iomap_valid(inode, &imap, offset); | 1136 | imap_valid = xfs_imap_valid(inode, &imap, offset); |
1139 | 1137 | ||
1140 | /* | 1138 | /* |
1141 | * First case, map an unwritten extent and prepare for | 1139 | * First case, map an unwritten extent and prepare for |
@@ -1156,7 +1154,7 @@ xfs_page_state_convert( | |||
1156 | * Make sure we don't use a read-only iomap | 1154 | * Make sure we don't use a read-only iomap |
1157 | */ | 1155 | */ |
1158 | if (flags == BMAPI_READ) | 1156 | if (flags == BMAPI_READ) |
1159 | iomap_valid = 0; | 1157 | imap_valid = 0; |
1160 | 1158 | ||
1161 | if (buffer_unwritten(bh)) { | 1159 | if (buffer_unwritten(bh)) { |
1162 | type = IO_UNWRITTEN; | 1160 | type = IO_UNWRITTEN; |
@@ -1169,7 +1167,7 @@ xfs_page_state_convert( | |||
1169 | flags = BMAPI_WRITE | BMAPI_MMAP; | 1167 | flags = BMAPI_WRITE | BMAPI_MMAP; |
1170 | } | 1168 | } |
1171 | 1169 | ||
1172 | if (!iomap_valid) { | 1170 | if (!imap_valid) { |
1173 | /* | 1171 | /* |
1174 | * if we didn't have a valid mapping then we | 1172 | * if we didn't have a valid mapping then we |
1175 | * need to ensure that we put the new mapping | 1173 | * need to ensure that we put the new mapping |
@@ -1190,9 +1188,10 @@ xfs_page_state_convert( | |||
1190 | &imap, flags); | 1188 | &imap, flags); |
1191 | if (err) | 1189 | if (err) |
1192 | goto error; | 1190 | goto error; |
1193 | iomap_valid = xfs_iomap_valid(inode, &imap, offset); | 1191 | imap_valid = xfs_imap_valid(inode, &imap, |
1192 | offset); | ||
1194 | } | 1193 | } |
1195 | if (iomap_valid) { | 1194 | if (imap_valid) { |
1196 | xfs_map_at_offset(inode, bh, &imap, offset); | 1195 | xfs_map_at_offset(inode, bh, &imap, offset); |
1197 | if (startio) { | 1196 | if (startio) { |
1198 | xfs_add_to_ioend(inode, bh, offset, | 1197 | xfs_add_to_ioend(inode, bh, offset, |
@@ -1212,7 +1211,7 @@ xfs_page_state_convert( | |||
1212 | * That means it must already have extents allocated | 1211 | * That means it must already have extents allocated |
1213 | * underneath it. Map the extent by reading it. | 1212 | * underneath it. Map the extent by reading it. |
1214 | */ | 1213 | */ |
1215 | if (!iomap_valid || flags != BMAPI_READ) { | 1214 | if (!imap_valid || flags != BMAPI_READ) { |
1216 | flags = BMAPI_READ; | 1215 | flags = BMAPI_READ; |
1217 | size = xfs_probe_cluster(inode, page, bh, | 1216 | size = xfs_probe_cluster(inode, page, bh, |
1218 | head, 1); | 1217 | head, 1); |
@@ -1220,7 +1219,8 @@ xfs_page_state_convert( | |||
1220 | &imap, flags); | 1219 | &imap, flags); |
1221 | if (err) | 1220 | if (err) |
1222 | goto error; | 1221 | goto error; |
1223 | iomap_valid = xfs_iomap_valid(inode, &imap, offset); | 1222 | imap_valid = xfs_imap_valid(inode, &imap, |
1223 | offset); | ||
1224 | } | 1224 | } |
1225 | 1225 | ||
1226 | /* | 1226 | /* |
@@ -1234,18 +1234,18 @@ xfs_page_state_convert( | |||
1234 | type = IO_NEW; | 1234 | type = IO_NEW; |
1235 | if (trylock_buffer(bh)) { | 1235 | if (trylock_buffer(bh)) { |
1236 | ASSERT(buffer_mapped(bh)); | 1236 | ASSERT(buffer_mapped(bh)); |
1237 | if (iomap_valid) | 1237 | if (imap_valid) |
1238 | all_bh = 1; | 1238 | all_bh = 1; |
1239 | xfs_add_to_ioend(inode, bh, offset, type, | 1239 | xfs_add_to_ioend(inode, bh, offset, type, |
1240 | &ioend, !iomap_valid); | 1240 | &ioend, !imap_valid); |
1241 | page_dirty--; | 1241 | page_dirty--; |
1242 | count++; | 1242 | count++; |
1243 | } else { | 1243 | } else { |
1244 | iomap_valid = 0; | 1244 | imap_valid = 0; |
1245 | } | 1245 | } |
1246 | } else if ((buffer_uptodate(bh) || PageUptodate(page)) && | 1246 | } else if ((buffer_uptodate(bh) || PageUptodate(page)) && |
1247 | (unmapped || startio)) { | 1247 | (unmapped || startio)) { |
1248 | iomap_valid = 0; | 1248 | imap_valid = 0; |
1249 | } | 1249 | } |
1250 | 1250 | ||
1251 | if (!iohead) | 1251 | if (!iohead) |
@@ -1259,7 +1259,7 @@ xfs_page_state_convert( | |||
1259 | if (startio) | 1259 | if (startio) |
1260 | xfs_start_page_writeback(page, 1, count); | 1260 | xfs_start_page_writeback(page, 1, count); |
1261 | 1261 | ||
1262 | if (ioend && iomap_valid) { | 1262 | if (ioend && imap_valid) { |
1263 | struct xfs_mount *m = XFS_I(inode)->i_mount; | 1263 | struct xfs_mount *m = XFS_I(inode)->i_mount; |
1264 | xfs_off_t iomap_offset = XFS_FSB_TO_B(m, imap.br_startoff); | 1264 | xfs_off_t iomap_offset = XFS_FSB_TO_B(m, imap.br_startoff); |
1265 | xfs_off_t iomap_bsize = XFS_FSB_TO_B(m, imap.br_blockcount); | 1265 | xfs_off_t iomap_bsize = XFS_FSB_TO_B(m, imap.br_blockcount); |