On Thu, Dec 14, 2023 at 07:34:30AM +0100, Christoph Hellwig wrote: > Inline the logic of xfs_rtmodify_summary_int into xfs_rtmodify_summary > and xfs_rtget_summary instead of having a somewhat awakard helper to s/awakard/awkward/g With that fixed, Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> --D > share a little bit of code. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > fs/xfs/libxfs/xfs_rtbitmap.c | 76 ++++++++++++------------------------ > 1 file changed, 25 insertions(+), 51 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_rtbitmap.c b/fs/xfs/libxfs/xfs_rtbitmap.c > index e67f6f763f7d0f..5773e4ea36c624 100644 > --- a/fs/xfs/libxfs/xfs_rtbitmap.c > +++ b/fs/xfs/libxfs/xfs_rtbitmap.c > @@ -452,71 +452,38 @@ 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( > +xfs_rtmodify_summary( > 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 */ > + int delta) /* in/out: summary block number */ > { > struct xfs_mount *mp = args->mp; > - int error; > - xfs_fileoff_t sb; /* summary fsblock */ > - xfs_rtsumoff_t so; /* index into the summary file */ > + xfs_rtsumoff_t so = xfs_rtsumoffs(mp, log, bbno); > unsigned int infoword; > + xfs_suminfo_t val; > + int error; > > - /* > - * 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); > + error = xfs_rtsummary_read_buf(args, xfs_rtsumoffs_to_block(mp, so)); > 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); > + 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; > } > - return 0; > -} > > -int > -xfs_rtmodify_summary( > - 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); > + 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. */ > -- > 2.39.2 > >