diff options
author | Christoph Hellwig <hch@infradead.org> | 2011-05-11 11:04:05 -0400 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2011-05-25 11:48:38 -0400 |
commit | 233eebb9a96f956c541c0c9094fd321894bd93a7 (patch) | |
tree | fb7e2d79a0d79ae69e01023c525f6f11a6a07314 | |
parent | 87bef1812d337beadfb1099e7361fd41264eb88e (diff) |
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>
-rw-r--r-- | fs/xfs/xfs_bmap.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 896e16f08ed9..e546a33214c9 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -2916,8 +2916,10 @@ xfs_bmap_del_extent( | |||
2916 | */ | 2916 | */ |
2917 | xfs_iext_remove(ip, *idx, 1, | 2917 | xfs_iext_remove(ip, *idx, 1, |
2918 | whichfork == XFS_ATTR_FORK ? BMAP_ATTRFORK : 0); | 2918 | whichfork == XFS_ATTR_FORK ? BMAP_ATTRFORK : 0); |
2919 | --*idx; | ||
2919 | if (delay) | 2920 | if (delay) |
2920 | break; | 2921 | break; |
2922 | |||
2921 | XFS_IFORK_NEXT_SET(ip, whichfork, | 2923 | XFS_IFORK_NEXT_SET(ip, whichfork, |
2922 | XFS_IFORK_NEXTENTS(ip, whichfork) - 1); | 2924 | XFS_IFORK_NEXTENTS(ip, whichfork) - 1); |
2923 | flags |= XFS_ILOG_CORE; | 2925 | flags |= XFS_ILOG_CORE; |