From 6040b5d560b84373769244ffdc856a13fb490a56 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Mon, 30 Sep 2019 16:17:07 -0400 Subject: [PATCH] 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 Reviewed-by: Dave Chinner Signed-off-by: Eric Sandeen --- scrub/fscounters.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scrub/fscounters.c b/scrub/fscounters.c index a2cf8171e..ad467e0c5 100644 --- a/scrub/fscounters.c +++ b/scrub/fscounters.c @@ -43,9 +43,10 @@ xfs_count_inodes_ag( { 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 @@ xfs_count_inodes_ag( 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); -- 2.47.3