Skip to content

Commit

Permalink
xfs: remove impossible to read code in xfs_bmap_add_extent_delay_real
Browse files Browse the repository at this point in the history
We already have the worst case blocks reserved, so xfs_icsb_modify_counters
won't fail in xfs_bmap_add_extent_delay_real.  In fact we've had an assert
to catch this case since day and it never triggered.  So remove the code
to try smaller reservations, and just return the error for that case in
addition to keeping the assert.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>
  • Loading branch information
Christoph Hellwig authored and Alex Elder committed Oct 12, 2011
1 parent e7455e0 commit b9b984d
Showing 1 changed file with 8 additions and 27 deletions.
35 changes: 8 additions & 27 deletions fs/xfs/xfs_bmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -1045,34 +1045,15 @@ xfs_bmap_add_extent_delay_real(
temp2 = xfs_bmap_worst_indlen(ip, temp2);
diff = (int)(temp + temp2 - startblockval(PREV.br_startblock) -
(cur ? cur->bc_private.b.allocated : 0));
if (diff > 0 &&
xfs_icsb_modify_counters(ip->i_mount, XFS_SBS_FDBLOCKS,
-((int64_t)diff), 0)) {
/*
* Ick gross gag me with a spoon.
*/
ASSERT(0); /* want to see if this ever happens! */
while (diff > 0) {
if (temp) {
temp--;
diff--;
if (!diff ||
!xfs_icsb_modify_counters(ip->i_mount,
XFS_SBS_FDBLOCKS,
-((int64_t)diff), 0))
break;
}
if (temp2) {
temp2--;
diff--;
if (!diff ||
!xfs_icsb_modify_counters(ip->i_mount,
XFS_SBS_FDBLOCKS,
-((int64_t)diff), 0))
break;
}
}
if (diff > 0) {
error = xfs_icsb_modify_counters(ip->i_mount,
XFS_SBS_FDBLOCKS,
-((int64_t)diff), 0);
ASSERT(!error);
if (error)
goto done;
}

ep = xfs_iext_get_ext(ifp, *idx);
xfs_bmbt_set_startblock(ep, nullstartblock((int)temp));
trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
Expand Down

0 comments on commit b9b984d

Please sign in to comment.