mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
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: Christoph Hellwig <hch@lst.de> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
This commit is contained in:
parent
c2adcfa31f
commit
b271b31411
1 changed files with 32 additions and 58 deletions
|
@ -452,63 +452,9 @@ xfs_trans_log_rtsummary(
|
|||
}
|
||||
|
||||
/*
|
||||
* Read and/or modify the summary information for a given extent size,
|
||||
* bitmap block 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.
|
||||
* Modify the summary information for a given extent size, bitmap block
|
||||
* combination.
|
||||
*/
|
||||
int
|
||||
xfs_rtmodify_summary_int(
|
||||
struct xfs_rtalloc_args *args,
|
||||
int log, /* log2 of extent size */
|
||||
xfs_fileoff_t bbno, /* bitmap block number */
|
||||
int delta, /* change to make to summary info */
|
||||
xfs_suminfo_t *sum) /* out: summary info for this block */
|
||||
{
|
||||
struct xfs_mount *mp = args->mp;
|
||||
int error;
|
||||
xfs_fileoff_t sb; /* summary fsblock */
|
||||
xfs_rtsumoff_t so; /* index into the summary file */
|
||||
unsigned int infoword;
|
||||
|
||||
/*
|
||||
* 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)
|
||||
return error;
|
||||
|
||||
/*
|
||||
* Point to the summary information, modify/log it, and/or copy it out.
|
||||
*/
|
||||
infoword = xfs_rtsumoffs_to_infoword(mp, so);
|
||||
if (delta) {
|
||||
xfs_suminfo_t val = xfs_suminfo_add(args, infoword, delta);
|
||||
|
||||
if (mp->m_rsum_cache) {
|
||||
if (val == 0 && log + 1 == mp->m_rsum_cache[bbno])
|
||||
mp->m_rsum_cache[bbno] = log;
|
||||
if (val != 0 && log >= mp->m_rsum_cache[bbno])
|
||||
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_rtmodify_summary(
|
||||
struct xfs_rtalloc_args *args,
|
||||
|
@ -516,7 +462,28 @@ xfs_rtmodify_summary(
|
|||
xfs_fileoff_t bbno, /* bitmap block number */
|
||||
int delta) /* in/out: summary block number */
|
||||
{
|
||||
return xfs_rtmodify_summary_int(args, log, bbno, delta, NULL);
|
||||
struct xfs_mount *mp = args->mp;
|
||||
xfs_rtsumoff_t so = xfs_rtsumoffs(mp, log, bbno);
|
||||
unsigned int infoword;
|
||||
xfs_suminfo_t val;
|
||||
int error;
|
||||
|
||||
error = xfs_rtsummary_read_buf(args, xfs_rtsumoffs_to_block(mp, so));
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
infoword = xfs_rtsumoffs_to_infoword(mp, so);
|
||||
val = xfs_suminfo_add(args, infoword, delta);
|
||||
|
||||
if (mp->m_rsum_cache) {
|
||||
if (val == 0 && log + 1 == mp->m_rsum_cache[bbno])
|
||||
mp->m_rsum_cache[bbno] = log;
|
||||
if (val != 0 && log >= mp->m_rsum_cache[bbno])
|
||||
mp->m_rsum_cache[bbno] = log + 1;
|
||||
}
|
||||
|
||||
xfs_trans_log_rtsummary(args, infoword);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -530,7 +497,14 @@ xfs_rtget_summary(
|
|||
xfs_fileoff_t bbno, /* bitmap block number */
|
||||
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. */
|
||||
|
|
Loading…
Add table
Reference in a new issue