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:
committed by
Alex Elder
parent
00239acf36
commit
f1c63b73cf
@ -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) {
|
||||||
|
Reference in New Issue
Block a user