Commit b271b314 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Chandan Babu R

xfs: split xfs_rtmodify_summary_int

Inline the logic of xfs_rtmodify_summary_int into xfs_rtmodify_summary
and xfs_rtget_summary instead of having a somewhat awkward helper to
share a little bit of code.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: default avatarChandan Babu R <chandanbabu@kernel.org>
parent c2adcfa3
...@@ -452,71 +452,38 @@ xfs_trans_log_rtsummary( ...@@ -452,71 +452,38 @@ xfs_trans_log_rtsummary(
} }
/* /*
* Read and/or modify the summary information for a given extent size, * Modify the summary information for a given extent size, bitmap block
* bitmap block combination. * combination.
* Keeps track of a current summary block, so we don't keep reading
* it from the buffer cache.
*
* Summary information is returned in *sum if specified.
* If no delta is specified, returns summary only.
*/ */
int int
xfs_rtmodify_summary_int( xfs_rtmodify_summary(
struct xfs_rtalloc_args *args, struct xfs_rtalloc_args *args,
int log, /* log2 of extent size */ int log, /* log2 of extent size */
xfs_fileoff_t bbno, /* bitmap block number */ xfs_fileoff_t bbno, /* bitmap block number */
int delta, /* change to make to summary info */ int delta) /* in/out: summary block number */
xfs_suminfo_t *sum) /* out: summary info for this block */
{ {
struct xfs_mount *mp = args->mp; struct xfs_mount *mp = args->mp;
int error; xfs_rtsumoff_t so = xfs_rtsumoffs(mp, log, bbno);
xfs_fileoff_t sb; /* summary fsblock */
xfs_rtsumoff_t so; /* index into the summary file */
unsigned int infoword; unsigned int infoword;
xfs_suminfo_t val;
int error;
/* error = xfs_rtsummary_read_buf(args, xfs_rtsumoffs_to_block(mp, so));
* Compute entry number in the summary file.
*/
so = xfs_rtsumoffs(mp, log, bbno);
/*
* Compute the block number in the summary file.
*/
sb = xfs_rtsumoffs_to_block(mp, so);
error = xfs_rtsummary_read_buf(args, sb);
if (error) if (error)
return error; return error;
/*
* Point to the summary information, modify/log it, and/or copy it out.
*/
infoword = xfs_rtsumoffs_to_infoword(mp, so); infoword = xfs_rtsumoffs_to_infoword(mp, so);
if (delta) { val = xfs_suminfo_add(args, infoword, delta);
xfs_suminfo_t val = xfs_suminfo_add(args, infoword, delta);
if (mp->m_rsum_cache) {
if (mp->m_rsum_cache) { if (val == 0 && log + 1 == mp->m_rsum_cache[bbno])
if (val == 0 && log + 1 == mp->m_rsum_cache[bbno]) mp->m_rsum_cache[bbno] = log;
mp->m_rsum_cache[bbno] = log; if (val != 0 && log >= mp->m_rsum_cache[bbno])
if (val != 0 && log >= mp->m_rsum_cache[bbno]) mp->m_rsum_cache[bbno] = log + 1;
mp->m_rsum_cache[bbno] = log + 1;
}
xfs_trans_log_rtsummary(args, infoword);
if (sum)
*sum = val;
} else if (sum) {
*sum = xfs_suminfo_get(args, infoword);
} }
return 0;
}
int xfs_trans_log_rtsummary(args, infoword);
xfs_rtmodify_summary( return 0;
struct xfs_rtalloc_args *args,
int log, /* log2 of extent size */
xfs_fileoff_t bbno, /* bitmap block number */
int delta) /* in/out: summary block number */
{
return xfs_rtmodify_summary_int(args, log, bbno, delta, NULL);
} }
/* /*
...@@ -530,7 +497,14 @@ xfs_rtget_summary( ...@@ -530,7 +497,14 @@ xfs_rtget_summary(
xfs_fileoff_t bbno, /* bitmap block number */ xfs_fileoff_t bbno, /* bitmap block number */
xfs_suminfo_t *sum) /* out: summary info for this block */ xfs_suminfo_t *sum) /* out: summary info for this block */
{ {
return xfs_rtmodify_summary_int(args, log, bbno, 0, sum); struct xfs_mount *mp = args->mp;
xfs_rtsumoff_t so = xfs_rtsumoffs(mp, log, bbno);
int error;
error = xfs_rtsummary_read_buf(args, xfs_rtsumoffs_to_block(mp, so));
if (!error)
*sum = xfs_suminfo_get(args, xfs_rtsumoffs_to_infoword(mp, so));
return error;
} }
/* Log rtbitmap block from the word @from to the byte before @next. */ /* Log rtbitmap block from the word @from to the byte before @next. */
......
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