diff options
| author | Christoph Hellwig <hch@infradead.org> | 2008-10-30 16:56:32 +1100 | 
|---|---|---|
| committer | Lachlan McIlroy <lachlan@sgi.com> | 2008-10-30 16:56:32 +1100 | 
| commit | 278d0ca14e889c3932a05d1a68675252a12b3466 (patch) | |
| tree | a228d171d4aded60b27639e30eca1bf58ed7daa6 /fs/xfs/xfs_ialloc_btree.c | |
| parent | 38bb74237d2d94c1aced2ec626d7d0f317e360da (diff) | |
| download | olio-linux-3.10-278d0ca14e889c3932a05d1a68675252a12b3466.tar.xz olio-linux-3.10-278d0ca14e889c3932a05d1a68675252a12b3466.zip  | |
[XFS] implement generic xfs_btree_update
From: Dave Chinner <dgc@sgi.com>
The most complicated part here is the lastrec tracking for the alloc
btree. Most logic is in the update_lastrec method which has to do some
hopefully good enough dirty magic to maintain it.
[hch: split out from bigger patch and a rework of the lastrec
logic]
SGI-PV: 985583
SGI-Modid: xfs-linux-melb:xfs-kern:32194a
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Bill O'Donnell <billodo@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_ialloc_btree.c')
| -rw-r--r-- | fs/xfs/xfs_ialloc_btree.c | 52 | 
1 files changed, 0 insertions, 52 deletions
diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index cd8bb519cb5..d080a6833a8 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -1551,58 +1551,6 @@ xfs_inobt_insert(  	return 0;  } -/* - * 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. - */ -int					/* error */ -xfs_inobt_update( -	xfs_btree_cur_t		*cur,	/* btree cursor */ -	xfs_agino_t		ino,	/* starting inode of chunk */ -	__int32_t		fcnt,	/* free inode count */ -	xfs_inofree_t		free)	/* free inode mask */ -{ -	xfs_inobt_block_t	*block;	/* btree block to update */ -	xfs_buf_t		*bp;	/* buffer containing btree block */ -	int			error;	/* error return value */ -	int			ptr;	/* current record number (updating) */ -	xfs_inobt_rec_t		*rp;	/* pointer to updated record */ - -	/* -	 * Pick up the current block. -	 */ -	bp = cur->bc_bufs[0]; -	block = XFS_BUF_TO_INOBT_BLOCK(bp); -#ifdef DEBUG -	if ((error = xfs_btree_check_sblock(cur, block, 0, bp))) -		return error; -#endif -	/* -	 * Get the address of the rec to be updated. -	 */ -	ptr = cur->bc_ptrs[0]; -	rp = XFS_INOBT_REC_ADDR(block, ptr, cur); -	/* -	 * Fill in the new contents and log them. -	 */ -	rp->ir_startino = cpu_to_be32(ino); -	rp->ir_freecount = cpu_to_be32(fcnt); -	rp->ir_free = cpu_to_be64(free); -	xfs_inobt_log_recs(cur, bp, ptr, ptr); -	/* -	 * Updating first record in leaf. Pass new key value up to our parent. -	 */ -	if (ptr == 1) { -		xfs_inobt_key_t	key;	/* key containing [ino] */ - -		key.ir_startino = cpu_to_be32(ino); -		if ((error = xfs_btree_updkey(cur, (union xfs_btree_key *)&key, 1))) -			return error; -	} -	return 0; -} -  STATIC struct xfs_btree_cur *  xfs_inobt_dup_cursor(  	struct xfs_btree_cur	*cur)  |