linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] xfs_scrub: random fixes
@ 2019-10-22 18:48 Darrick J. Wong
  2019-10-22 18:48 ` [PATCH 1/2] xfs_scrub: clean out the nproc global variable Darrick J. Wong
  2019-10-22 18:48 ` [PATCH 2/2] xfs_scrub: refactor xfs_iterate_inodes_range_check Darrick J. Wong
  0 siblings, 2 replies; 4+ messages in thread
From: Darrick J. Wong @ 2019-10-22 18:48 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

Hi all,

A couple of small cleanups and refactorings to the scrub code that don't
fit elsewhere.

If you're going to start using this mess, you probably ought to just
pull from my git trees, which are linked below.

This is an extraordinary way to destroy everything.  Enjoy!
Comments and questions are, as always, welcome.

--D

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=scrub-random-fixes

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] xfs_scrub: clean out the nproc global variable
  2019-10-22 18:48 [PATCH 0/2] xfs_scrub: random fixes Darrick J. Wong
@ 2019-10-22 18:48 ` Darrick J. Wong
  2019-10-22 18:48 ` [PATCH 2/2] xfs_scrub: refactor xfs_iterate_inodes_range_check Darrick J. Wong
  1 sibling, 0 replies; 4+ messages in thread
From: Darrick J. Wong @ 2019-10-22 18:48 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs, Eric Sandeen

From: Darrick J. Wong <darrick.wong@oracle.com>

Get rid of this global variable since we already have a libfrog function
that does exactly what it does.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
---
 scrub/disk.c      |    2 ++
 scrub/xfs_scrub.c |    8 --------
 scrub/xfs_scrub.h |    1 -
 3 files changed, 2 insertions(+), 9 deletions(-)


diff --git a/scrub/disk.c b/scrub/disk.c
index 8a8a411b..a1ef798a 100644
--- a/scrub/disk.c
+++ b/scrub/disk.c
@@ -22,6 +22,7 @@
 #include "xfs_scrub.h"
 #include "common.h"
 #include "disk.h"
+#include "platform_defs.h"
 
 #ifndef BLKROTATIONAL
 # define BLKROTATIONAL	_IO(0x12, 126)
@@ -42,6 +43,7 @@ __disk_heads(
 {
 	int			iomin;
 	int			ioopt;
+	int			nproc = platform_nproc();
 	unsigned short		rot;
 	int			error;
 
diff --git a/scrub/xfs_scrub.c b/scrub/xfs_scrub.c
index b6a01274..147c114c 100644
--- a/scrub/xfs_scrub.c
+++ b/scrub/xfs_scrub.c
@@ -131,9 +131,6 @@ static bool			display_rusage;
 /* Background mode; higher values insert more pauses between scrub calls. */
 unsigned int			bg_mode;
 
-/* Maximum number of processors available to us. */
-int				nproc;
-
 /* Number of threads we're allowed to use. */
 unsigned int			force_nr_threads;
 
@@ -717,11 +714,6 @@ main(
 	}
 	memcpy(&ctx.fsinfo, fsp, sizeof(struct fs_path));
 
-	/* How many CPUs? */
-	nproc = sysconf(_SC_NPROCESSORS_ONLN);
-	if (nproc < 1)
-		nproc = 1;
-
 	/* Set up a page-aligned buffer for read verification. */
 	page_size = sysconf(_SC_PAGESIZE);
 	if (page_size < 0) {
diff --git a/scrub/xfs_scrub.h b/scrub/xfs_scrub.h
index f9a72052..37d78f61 100644
--- a/scrub/xfs_scrub.h
+++ b/scrub/xfs_scrub.h
@@ -15,7 +15,6 @@ extern char *progname;
 extern unsigned int		force_nr_threads;
 extern unsigned int		bg_mode;
 extern unsigned int		debug;
-extern int			nproc;
 extern bool			verbose;
 extern long			page_size;
 extern bool			want_fstrim;


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] xfs_scrub: refactor xfs_iterate_inodes_range_check
  2019-10-22 18:48 [PATCH 0/2] xfs_scrub: random fixes Darrick J. Wong
  2019-10-22 18:48 ` [PATCH 1/2] xfs_scrub: clean out the nproc global variable Darrick J. Wong
@ 2019-10-22 18:48 ` Darrick J. Wong
  2019-11-01 20:51   ` Eric Sandeen
  1 sibling, 1 reply; 4+ messages in thread
From: Darrick J. Wong @ 2019-10-22 18:48 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move all the bulkstat action into a single helper function.  This gets
rid of the awkward name and increases cohesion.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 scrub/inodes.c |   40 ++++++++++++++++++++++++----------------
 1 file changed, 24 insertions(+), 16 deletions(-)


diff --git a/scrub/inodes.c b/scrub/inodes.c
index 7aa61ebe..7c04d7f6 100644
--- a/scrub/inodes.c
+++ b/scrub/inodes.c
@@ -43,19 +43,37 @@
  */
 
 /*
- * Did we get exactly the inodes we expected?  If not, load them one at a
- * time (or fake it) into the bulkstat data.
+ * Run bulkstat on an entire inode allocation group, then check that we got
+ * exactly the inodes we expected.  If not, load them one at a time (or fake
+ * it) into the bulkstat data.
  */
 static void
-xfs_iterate_inodes_range_check(
+bulkstat_for_inumbers(
 	struct scrub_ctx	*ctx,
-	struct xfs_inumbers	*inumbers,
-	struct xfs_bulkstat	*bstat)
+	const char		*descr,
+	const struct xfs_inumbers *inumbers,
+	struct xfs_bulkstat_req	*breq)
 {
+	struct xfs_bulkstat	*bstat = breq->bulkstat;
 	struct xfs_bulkstat	*bs;
 	int			i;
 	int			error;
 
+	/* First we try regular bulkstat, for speed. */
+	breq->hdr.ino = inumbers->xi_startino;
+	breq->hdr.icount = inumbers->xi_alloccount;
+	error = xfrog_bulkstat(&ctx->mnt, breq);
+	if (error) {
+		char	errbuf[DESCR_BUFSZ];
+
+		str_info(ctx, descr, "%s",
+			 strerror_r(error, errbuf, DESCR_BUFSZ));
+	}
+
+	/*
+	 * Check each of the stats we got back to make sure we got the inodes
+	 * we asked for.
+	 */
 	for (i = 0, bs = bstat; i < XFS_INODES_PER_CHUNK; i++) {
 		if (!(inumbers->xi_allocmask & (1ULL << i)))
 			continue;
@@ -131,17 +149,7 @@ xfs_iterate_inodes_ag(
 		if (inumbers->xi_alloccount == 0)
 			goto igrp_retry;
 
-		breq->hdr.ino = inumbers->xi_startino;
-		breq->hdr.icount = inumbers->xi_alloccount;
-		error = xfrog_bulkstat(&ctx->mnt, breq);
-		if (error) {
-			char	errbuf[DESCR_BUFSZ];
-
-			str_info(ctx, descr, "%s", strerror_r(error,
-						errbuf, DESCR_BUFSZ));
-		}
-
-		xfs_iterate_inodes_range_check(ctx, inumbers, breq->bulkstat);
+		bulkstat_for_inumbers(ctx, descr, inumbers, breq);
 
 		/* Iterate all the inodes. */
 		for (i = 0, bs = breq->bulkstat;


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] xfs_scrub: refactor xfs_iterate_inodes_range_check
  2019-10-22 18:48 ` [PATCH 2/2] xfs_scrub: refactor xfs_iterate_inodes_range_check Darrick J. Wong
@ 2019-11-01 20:51   ` Eric Sandeen
  0 siblings, 0 replies; 4+ messages in thread
From: Eric Sandeen @ 2019-11-01 20:51 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: linux-xfs

On 10/22/19 1:48 PM, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move all the bulkstat action into a single helper function.  This gets
> rid of the awkward name and increases cohesion.

mmm, cohesion.

> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>

Reviewed-by: Eric Sandeen <sandeen@redhat.com>


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-11-01 20:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-22 18:48 [PATCH 0/2] xfs_scrub: random fixes Darrick J. Wong
2019-10-22 18:48 ` [PATCH 1/2] xfs_scrub: clean out the nproc global variable Darrick J. Wong
2019-10-22 18:48 ` [PATCH 2/2] xfs_scrub: refactor xfs_iterate_inodes_range_check Darrick J. Wong
2019-11-01 20:51   ` Eric Sandeen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).