From: Darrick J. Wong Date: Wed, 12 Dec 2018 17:42:40 +0000 (-0600) Subject: xfs_scrub: handle totally empty inode chunks X-Git-Tag: v4.20.0-rc1~24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=300661d3a5c12306ef6afe6396893127018e7772;p=thirdparty%2Fxfsprogs-dev.git xfs_scrub: handle totally empty inode chunks We try to load a single inobt record with each FSINUMBERS call. If the chunk is totally empty (which can happen when there are more than one inobt record per block) we should skip to the next INUMBERS call since there are no inodes to bulkstat. Signed-off-by: Darrick J. Wong Reviewed-by: Allison Henderson Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- diff --git a/scrub/inodes.c b/scrub/inodes.c index 693f21ec0..442a59787 100644 --- a/scrub/inodes.c +++ b/scrub/inodes.c @@ -139,6 +139,12 @@ xfs_iterate_inodes_range( /* Load the inodes. */ ino = inogrp.xi_startino - 1; bulkreq.icount = inogrp.xi_alloccount; + /* + * We can have totally empty inode chunks on filesystems where + * there are more than 64 inodes per block. Skip these. + */ + if (inogrp.xi_alloccount == 0) + goto igrp_retry; error = ioctl(ctx->mnt_fd, XFS_IOC_FSBULKSTAT, &bulkreq); if (error) str_info(ctx, descr, "%s", strerror_r(errno,