Commit ae05eb11 authored by Darrick J. Wong's avatar Darrick J. Wong

xfs: speed up xfs_iwalk_adjust_start a little bit

Replace the open-coded loop that recomputes freecount with a single call
to a bit weight function.
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 4b2f459d
......@@ -22,6 +22,7 @@
#include "xfs_trans.h"
#include "xfs_pwork.h"
#include "xfs_ag.h"
#include "xfs_bit.h"
/*
* Walking Inodes in the Filesystem
......@@ -131,21 +132,11 @@ xfs_iwalk_adjust_start(
struct xfs_inobt_rec_incore *irec) /* btree record */
{
int idx; /* index into inode chunk */
int i;
idx = agino - irec->ir_startino;
/*
* We got a right chunk with some left inodes allocated at it. Grab
* the chunk record. Mark all the uninteresting inodes free because
* they're before our start point.
*/
for (i = 0; i < idx; i++) {
if (XFS_INOBT_MASK(i) & ~irec->ir_free)
irec->ir_freecount++;
}
irec->ir_free |= xfs_inobt_maskn(0, idx);
irec->ir_freecount = hweight64(irec->ir_free);
}
/* Allocate memory for a walk. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment