Browse Source

xfs: correctly decrement the extent buffer index in xfs_bmap_del_extent

The code in xfs_bmap_del_extent does not correctly decrement the
extent buffer index when deleting a whole extent.  Most of the time
this gets caught by checks in xfs_bmapi that work around it and
decrement it manually and thus wasn't noticed so far.

Based on an earlier patch from Lachlan McIlroy.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Lachlan McIlroy <lmcilroy@redhat.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
Christoph Hellwig 14 years ago
parent
commit
233eebb9a9
1 changed files with 2 additions and 0 deletions
  1. 2 0
      fs/xfs/xfs_bmap.c

+ 2 - 0
fs/xfs/xfs_bmap.c

@@ -2916,8 +2916,10 @@ xfs_bmap_del_extent(
 		 */
 		xfs_iext_remove(ip, *idx, 1,
 				whichfork == XFS_ATTR_FORK ? BMAP_ATTRFORK : 0);
+		--*idx;
 		if (delay)
 			break;
+
 		XFS_IFORK_NEXT_SET(ip, whichfork,
 			XFS_IFORK_NEXTENTS(ip, whichfork) - 1);
 		flags |= XFS_ILOG_CORE;