[PATCH 7/9] xfs: do not do pointer arithmetics on extent records
Alex Elder
aelder at sgi.com
Tue May 24 19:31:47 CDT 2011
On Wed, 2011-05-11 at 11:04 -0400, Christoph Hellwig wrote:
> 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 at lst.de>
Wow, that one's nasty. Did someone find this by hitting it?
Looks good.
Reviewed-by: Alex Elder <aelder at sgi.com>
> Index: xfs/fs/xfs/xfs_bmap.c
> ===================================================================
> --- xfs.orig/fs/xfs/xfs_bmap.c 2011-05-11 10:16:58.847733078 +0200
> +++ xfs/fs/xfs/xfs_bmap.c 2011-05-11 10:17:04.803235692 +0200
> @@ -5145,9 +5145,12 @@ xfs_bunmapi(
> */
> ASSERT(bno >= del.br_blockcount);
> bno -= del.br_blockcount;
> - if (bno < got.br_startoff) {
> - if (--lastx >= 0)
> - xfs_bmbt_get_all(--ep, &got);
> + if (got.br_startoff > bno) {
> + if (--lastx >= 0) {
> + ep = xfs_iext_get_ext(ifp,
> + lastx);
> + xfs_bmbt_get_all(ep, &got);
> + }
> }
> continue;
> } else if (del.br_state == XFS_EXT_UNWRITTEN) {
>
> _______________________________________________
> xfs mailing list
> xfs at oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs
More information about the xfs
mailing list