Commit afabc24a authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Felix Blyakher

xfs: improve xfs_inobt_update prototype

Both callers of xfs_inobt_update have the record in form of a
xfs_inobt_rec_incore_t, so just pass a pointer to it instead of the
individual variables.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarAlex Elder <aelder@sgi.com>
Signed-off-by: default avatarFelix Blyakher <felixb@sgi.com>
parent 2e287a73
...@@ -110,22 +110,19 @@ xfs_inobt_lookup_le( ...@@ -110,22 +110,19 @@ xfs_inobt_lookup_le(
} }
/* /*
* Update the record referred to by cur to the value given * Update the record referred to by cur to the value given.
* by [ino, fcnt, free].
* This either works (return 0) or gets an EFSCORRUPTED error. * This either works (return 0) or gets an EFSCORRUPTED error.
*/ */
STATIC int /* error */ STATIC int /* error */
xfs_inobt_update( xfs_inobt_update(
struct xfs_btree_cur *cur, /* btree cursor */ struct xfs_btree_cur *cur, /* btree cursor */
xfs_agino_t ino, /* starting inode of chunk */ xfs_inobt_rec_incore_t *irec) /* btree record */
__int32_t fcnt, /* free inode count */
xfs_inofree_t free) /* free inode mask */
{ {
union xfs_btree_rec rec; union xfs_btree_rec rec;
rec.inobt.ir_startino = cpu_to_be32(ino); rec.inobt.ir_startino = cpu_to_be32(irec->ir_startino);
rec.inobt.ir_freecount = cpu_to_be32(fcnt); rec.inobt.ir_freecount = cpu_to_be32(irec->ir_freecount);
rec.inobt.ir_free = cpu_to_be64(free); rec.inobt.ir_free = cpu_to_be64(irec->ir_free);
return xfs_btree_update(cur, &rec); return xfs_btree_update(cur, &rec);
} }
...@@ -946,8 +943,8 @@ nextag: ...@@ -946,8 +943,8 @@ nextag:
ino = XFS_AGINO_TO_INO(mp, agno, rec.ir_startino + offset); ino = XFS_AGINO_TO_INO(mp, agno, rec.ir_startino + offset);
rec.ir_free &= ~XFS_INOBT_MASK(offset); rec.ir_free &= ~XFS_INOBT_MASK(offset);
rec.ir_freecount--; rec.ir_freecount--;
if ((error = xfs_inobt_update(cur, rec.ir_startino, rec.ir_freecount, error = xfs_inobt_update(cur, &rec);
rec.ir_free))) if (error)
goto error0; goto error0;
be32_add_cpu(&agi->agi_freecount, -1); be32_add_cpu(&agi->agi_freecount, -1);
xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT);
...@@ -1149,12 +1146,14 @@ xfs_difree( ...@@ -1149,12 +1146,14 @@ xfs_difree(
} else { } else {
*delete = 0; *delete = 0;
if ((error = xfs_inobt_update(cur, rec.ir_startino, rec.ir_freecount, rec.ir_free))) { error = xfs_inobt_update(cur, &rec);
if (error) {
cmn_err(CE_WARN, cmn_err(CE_WARN,
"xfs_difree: xfs_inobt_update() returned an error %d on %s. Returning error.", "xfs_difree: xfs_inobt_update returned an error %d on %s.",
error, mp->m_fsname); error, mp->m_fsname);
goto error0; goto error0;
} }
/* /*
* Change the inode free counts and log the ag/sb changes. * Change the inode free counts and log the ag/sb changes.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment