Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08358906 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Ben Myers
Browse files

xfs: remove the alloc_done argument to xfs_dialloc



We can simplify check the IO_agbp pointer for being non-NULL instead of
passing another argument through two layers of function calls.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarMark Tinguely <tinguely@sgi.com>
Signed-off-by: default avatarBen Myers <bpm@sgi.com>
parent f2ecc5e4
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -895,7 +895,6 @@ xfs_dialloc(
	umode_t			mode,
	int			okalloc,
	struct xfs_buf		**IO_agbp,
	boolean_t		*alloc_done,
	xfs_ino_t		*inop)
{
	struct xfs_buf		*agbp;
@@ -955,7 +954,6 @@ xfs_dialloc(
	 * or in which we can allocate some inodes.  Iterate through the
	 * allocation groups upward, wrapping at the end.
	 */
	*alloc_done = B_FALSE;
	while (!agi->agi_freecount) {
		/*
		 * Don't do anything if we're not supposed to allocate
@@ -982,7 +980,6 @@ xfs_dialloc(
				 * us again where we left off.
				 */
				ASSERT(be32_to_cpu(agi->agi_freecount) > 0);
				*alloc_done = B_TRUE;
				*IO_agbp = agbp;
				*inop = NULLFSINO;
				return 0;
+0 −2
Original line number Diff line number Diff line
@@ -75,8 +75,6 @@ xfs_dialloc(
	umode_t		mode,		/* mode bits for new inode */
	int		okalloc,	/* ok to allocate more space */
	struct xfs_buf	**agbp,		/* buf for a.g. inode header */
	boolean_t	*alloc_done,	/* an allocation was done to replenish
					   the free inodes */
	xfs_ino_t	*inop);		/* inode number allocated */

/*
+2 −3
Original line number Diff line number Diff line
@@ -887,7 +887,6 @@ xfs_ialloc(
	prid_t		prid,
	int		okalloc,
	xfs_buf_t	**ialloc_context,
	boolean_t	*call_again,
	xfs_inode_t	**ipp)
{
	xfs_ino_t	ino;
@@ -902,10 +901,10 @@ xfs_ialloc(
	 * the on-disk inode to be allocated.
	 */
	error = xfs_dialloc(tp, pip ? pip->i_ino : 0, mode, okalloc,
			    ialloc_context, call_again, &ino);
			    ialloc_context, &ino);
	if (error)
		return error;
	if (*call_again || ino == NULLFSINO) {
	if (*ialloc_context || ino == NULLFSINO) {
		*ipp = NULL;
		return 0;
	}
+1 −1
Original line number Diff line number Diff line
@@ -517,7 +517,7 @@ void xfs_inode_free(struct xfs_inode *ip);
 */
int		xfs_ialloc(struct xfs_trans *, xfs_inode_t *, umode_t,
			   xfs_nlink_t, xfs_dev_t, prid_t, int,
			   struct xfs_buf **, boolean_t *, xfs_inode_t **);
			   struct xfs_buf **, xfs_inode_t **);

uint		xfs_ip2xflags(struct xfs_inode *);
uint		xfs_dic2xflags(struct xfs_dinode *);
+7 −10
Original line number Diff line number Diff line
@@ -65,7 +65,6 @@ xfs_dir_ialloc(
	xfs_trans_t	*ntp;
	xfs_inode_t	*ip;
	xfs_buf_t	*ialloc_context = NULL;
	boolean_t	call_again = B_FALSE;
	int		code;
	uint		log_res;
	uint		log_count;
@@ -91,7 +90,7 @@ xfs_dir_ialloc(
	 * the inode(s) that we've just allocated.
	 */
	code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid, okalloc,
			  &ialloc_context, &call_again, &ip);
			  &ialloc_context, &ip);

	/*
	 * Return an error if we were unable to allocate a new inode.
@@ -102,19 +101,18 @@ xfs_dir_ialloc(
		*ipp = NULL;
		return code;
	}
	if (!call_again && (ip == NULL)) {
	if (!ialloc_context && !ip) {
		*ipp = NULL;
		return XFS_ERROR(ENOSPC);
	}

	/*
	 * If call_again is set, then we were unable to get an
	 * If the AGI buffer is non-NULL, then we were unable to get an
	 * inode in one operation.  We need to commit the current
	 * transaction and call xfs_ialloc() again.  It is guaranteed
	 * to succeed the second time.
	 */
	if (call_again) {

	if (ialloc_context) {
		/*
		 * Normally, xfs_trans_commit releases all the locks.
		 * We call bhold to hang on to the ialloc_context across
@@ -195,7 +193,7 @@ xfs_dir_ialloc(
		 * this call should always succeed.
		 */
		code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid,
				  okalloc, &ialloc_context, &call_again, &ip);
				  okalloc, &ialloc_context, &ip);

		/*
		 * If we get an error at this point, return to the caller
@@ -206,13 +204,12 @@ xfs_dir_ialloc(
			*ipp = NULL;
			return code;
		}
		ASSERT ((!call_again) && (ip != NULL));
		ASSERT(!ialloc_context && ip);

	} else {
		if (committed != NULL) {
		if (committed != NULL)
			*committed = 0;
	}
	}

	*ipp = ip;
	*tpp = tp;