xfs_scrub: batch inumbers calls during fscounters calculation
Improve the efficiency of the phase 7 inode counts by batching requests,
now that we have per-AG inumbers wrappers.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
diff --git a/scrub/fscounters.c b/scrub/fscounters.c
index f6eb2ff..712a2b3 100644
--- a/scrub/fscounters.c
+++ b/scrub/fscounters.c
@@ -43,9 +43,10 @@
{
struct xfs_inumbers_req *ireq;
uint64_t nr = 0;
+ unsigned int i;
int error;
- ireq = xfrog_inumbers_alloc_req(1, 0);
+ ireq = xfrog_inumbers_alloc_req(64, 0);
if (!ireq) {
str_info(ctx, descr, _("Insufficient memory; giving up."));
return false;
@@ -55,7 +56,8 @@
while (!(error = xfrog_inumbers(&ctx->mnt, ireq))) {
if (ireq->hdr.ocount == 0)
break;
- nr += ireq->inumbers[0].xi_alloccount;
+ for (i = 0; i < ireq->hdr.ocount; i++)
+ nr += ireq->inumbers[i].xi_alloccount;
}
free(ireq);