xfs: do not do pointer arithmetic on extent records

We need to call xfs_iext_get_ext for the previous extent to get a
valid pointer, and can't just do pointer arithmetics as they might
be in different pages.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Lachlan McIlroy <lmcilroy@redhat.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
This commit is contained in:
Christoph Hellwig
2011-05-11 15:04:09 +00:00
committed by Alex Elder
parent 00239acf36
commit f1c63b73cf

View File

@ -5143,9 +5143,12 @@ xfs_bunmapi(
*/ */
ASSERT(bno >= del.br_blockcount); ASSERT(bno >= del.br_blockcount);
bno -= del.br_blockcount; bno -= del.br_blockcount;
if (bno < got.br_startoff) { if (got.br_startoff > bno) {
if (--lastx >= 0) if (--lastx >= 0) {
xfs_bmbt_get_all(--ep, &got); ep = xfs_iext_get_ext(ifp,
lastx);
xfs_bmbt_get_all(ep, &got);
}
} }
continue; continue;
} else if (del.br_state == XFS_EXT_UNWRITTEN) { } else if (del.br_state == XFS_EXT_UNWRITTEN) {