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

Commit 4d1f88d7 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Alex Elder
Browse files

xfs: clean up error handling in xfs_trans_dqresv



Move the error code selection after the goto label and fold the
xfs_quota_error helper into it.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <david@fromorbit.com>
Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
parent 512dd1ab
Loading
Loading
Loading
Loading
+17 −31
Original line number Diff line number Diff line
@@ -589,14 +589,6 @@ xfs_trans_unreserve_and_mod_dquots(
	}
}

STATIC int
xfs_quota_error(uint flags)
{
	if (flags & XFS_QMOPT_ENOSPC)
		return ENOSPC;
	return EDQUOT;
}

/*
 * This reserves disk blocks and inodes against a dquot.
 * Flags indicate if the dquot is to be locked here and also
@@ -612,7 +604,6 @@ xfs_trans_dqresv(
	long		ninos,
	uint		flags)
{
	int		error;
	xfs_qcnt_t	hardlimit;
	xfs_qcnt_t	softlimit;
	time_t		timer;
@@ -649,7 +640,6 @@ xfs_trans_dqresv(
		warnlimit = XFS_QI_RTBWARNLIMIT(dqp->q_mount);
		resbcountp = &dqp->q_res_rtbcount;
	}
	error = 0;

	if ((flags & XFS_QMOPT_FORCE_RES) == 0 &&
	    dqp->q_core.d_id &&
@@ -667,20 +657,14 @@ xfs_trans_dqresv(
			 * nblks.
			 */
			if (hardlimit > 0ULL &&
			     (hardlimit <= nblks + *resbcountp)) {
				error = xfs_quota_error(flags);
			    hardlimit <= nblks + *resbcountp)
				goto error_return;
			}

			if (softlimit > 0ULL &&
			     (softlimit <= nblks + *resbcountp)) {
				if ((timer != 0 && get_seconds() > timer) ||
				    (warns != 0 && warns >= warnlimit)) {
					error = xfs_quota_error(flags);
			    softlimit <= nblks + *resbcountp &&
			    ((timer != 0 && get_seconds() > timer) ||
			     (warns != 0 && warns >= warnlimit)))
				goto error_return;
		}
			}
		}
		if (ninos > 0) {
			count = be64_to_cpu(dqp->q_core.d_icount);
			timer = be32_to_cpu(dqp->q_core.d_itimer);
@@ -692,18 +676,15 @@ xfs_trans_dqresv(
			softlimit = be64_to_cpu(dqp->q_core.d_ino_softlimit);
			if (!softlimit)
				softlimit = q->qi_isoftlimit;
			if (hardlimit > 0ULL && count >= hardlimit) {
				error = xfs_quota_error(flags);

			if (hardlimit > 0ULL && count >= hardlimit)
				goto error_return;
			} else if (softlimit > 0ULL && count >= softlimit) {
				if ((timer != 0 && get_seconds() > timer) ||
				     (warns != 0 && warns >= warnlimit)) {
					error = xfs_quota_error(flags);
			if (softlimit > 0ULL && count >= softlimit &&
			    ((timer != 0 && get_seconds() > timer) ||
			     (warns != 0 && warns >= warnlimit)))
				goto error_return;
		}
	}
		}
	}

	/*
	 * Change the reservation, but not the actual usage.
@@ -736,9 +717,14 @@ xfs_trans_dqresv(
	ASSERT(dqp->q_res_rtbcount >= be64_to_cpu(dqp->q_core.d_rtbcount));
	ASSERT(dqp->q_res_icount >= be64_to_cpu(dqp->q_core.d_icount));

	xfs_dqunlock(dqp);
	return 0;

error_return:
	xfs_dqunlock(dqp);
	return error;
	if (flags & XFS_QMOPT_ENOSPC)
		return ENOSPC;
	return EDQUOT;
}