From: Darrick J. Wong Date: Mon, 30 Sep 2019 20:17:07 +0000 (-0400) Subject: xfs_scrub: batch inumbers calls during fscounters calculation X-Git-Tag: v5.3.0-rc2~88 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6040b5d560b84373769244ffdc856a13fb490a56;p=thirdparty%2Fxfsprogs-dev.git 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 --- 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);