linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org, cem@kernel.org
Cc: linux-xfs@vger.kernel.org, hch@lst.de
Subject: [PATCH 6/7] xfs_scrub: collect free space histograms during phase 7
Date: Mon, 01 Jul 2024 18:04:26 -0700	[thread overview]
Message-ID: <171988118672.2007921.6461553875020192436.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <171988118569.2007921.18066484659815583228.stgit@frogsfrogsfrogs>

From: Darrick J. Wong <djwong@kernel.org>

Collect a histogram of free space observed during phase 7.  We'll put
this information to use in the next patch.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 libfrog/histogram.c |   38 ++++++++++++++++++++++++++++++++++++++
 libfrog/histogram.h |    3 +++
 scrub/phase7.c      |   47 +++++++++++++++++++++++++++++++++++++++++++++--
 scrub/xfs_scrub.c   |    5 +++++
 scrub/xfs_scrub.h   |    4 ++++
 5 files changed, 95 insertions(+), 2 deletions(-)


diff --git a/libfrog/histogram.c b/libfrog/histogram.c
index bed79e35b021..54e2bac0f731 100644
--- a/libfrog/histogram.c
+++ b/libfrog/histogram.c
@@ -212,3 +212,41 @@ hist_summarize(
 	printf(_("average free extent size %g\n"),
 			(double)hs->totblocks / (double)hs->totexts);
 }
+
+/* Copy the contents of src to dest. */
+void
+hist_import(
+	struct histogram	*dest,
+	const struct histogram	*src)
+{
+	unsigned int		i;
+
+	ASSERT(dest->nr_buckets == src->nr_buckets);
+
+	dest->totblocks += src->totblocks;
+	dest->totexts += src->totexts;
+
+	for (i = 0; i < dest->nr_buckets; i++) {
+		ASSERT(dest->buckets[i].low == src->buckets[i].low);
+		ASSERT(dest->buckets[i].high == src->buckets[i].high);
+
+		dest->buckets[i].count += src->buckets[i].count;
+		dest->buckets[i].blocks += src->buckets[i].blocks;
+	}
+}
+
+/*
+ * Move the contents of src to dest and reinitialize src.  dst must not
+ * contain any observations or buckets.
+ */
+void
+hist_move(
+	struct histogram	*dest,
+	struct histogram	*src)
+{
+	ASSERT(dest->nr_buckets == 0);
+	ASSERT(dest->totexts == 0);
+
+	memcpy(dest, src, sizeof(struct histogram));
+	hist_init(src);
+}
diff --git a/libfrog/histogram.h b/libfrog/histogram.h
index 2e2b169a79b0..ec788344d4c2 100644
--- a/libfrog/histogram.h
+++ b/libfrog/histogram.h
@@ -47,4 +47,7 @@ static inline unsigned int hist_buckets(const struct histogram *hs)
 	return hs->nr_buckets;
 }
 
+void hist_import(struct histogram *dest, const struct histogram *src);
+void hist_move(struct histogram *dest, struct histogram *src);
+
 #endif /* __LIBFROG_HISTOGRAM_H__ */
diff --git a/scrub/phase7.c b/scrub/phase7.c
index cce5ede00122..475d8f157eec 100644
--- a/scrub/phase7.c
+++ b/scrub/phase7.c
@@ -12,6 +12,7 @@
 #include "libfrog/ptvar.h"
 #include "libfrog/fsgeom.h"
 #include "libfrog/scrub.h"
+#include "libfrog/histogram.h"
 #include "list.h"
 #include "xfs_scrub.h"
 #include "common.h"
@@ -27,8 +28,36 @@ struct summary_counts {
 	unsigned long long	rbytes;		/* rt dev bytes */
 	unsigned long long	next_phys;	/* next phys bytes we see? */
 	unsigned long long	agbytes;	/* freespace bytes */
+
+	/* Free space histogram, in fsb */
+	struct histogram	datadev_hist;
 };
 
+/*
+ * Initialize a free space histogram.  Unsharded realtime volumes can be up to
+ * 2^52 blocks long, so we allocate enough buckets to handle that.
+ */
+static inline void
+init_freesp_hist(
+	struct histogram	*hs)
+{
+	unsigned int		i;
+
+	hist_init(hs);
+	for (i = 0; i < 53; i++)
+		hist_add_bucket(hs, 1ULL << i);
+	hist_prepare(hs, 1ULL << 53);
+}
+
+static void
+summary_count_init(
+	void			*data)
+{
+	struct summary_counts	*counts = data;
+
+	init_freesp_hist(&counts->datadev_hist);
+}
+
 /* Record block usage. */
 static int
 count_block_summary(
@@ -48,8 +77,14 @@ count_block_summary(
 	if (fsmap->fmr_device == ctx->fsinfo.fs_logdev)
 		return 0;
 	if ((fsmap->fmr_flags & FMR_OF_SPECIAL_OWNER) &&
-	    fsmap->fmr_owner == XFS_FMR_OWN_FREE)
+	    fsmap->fmr_owner == XFS_FMR_OWN_FREE) {
+		uint64_t	blocks;
+
+		blocks = cvt_b_to_off_fsbt(&ctx->mnt, fsmap->fmr_length);
+		if (fsmap->fmr_device == ctx->fsinfo.fs_datadev)
+			hist_add(&counts->datadev_hist, blocks);
 		return 0;
+	}
 
 	len = fsmap->fmr_length;
 
@@ -87,6 +122,9 @@ add_summaries(
 	total->dbytes += item->dbytes;
 	total->rbytes += item->rbytes;
 	total->agbytes += item->agbytes;
+
+	hist_import(&total->datadev_hist, &item->datadev_hist);
+	hist_free(&item->datadev_hist);
 	return 0;
 }
 
@@ -118,6 +156,8 @@ phase7_func(
 	int			ip;
 	int			error;
 
+	summary_count_init(&totalcount);
+
 	/* Check and fix the summary metadata. */
 	scrub_item_init_fs(&sri);
 	scrub_item_schedule_group(&sri, XFROG_SCRUB_GROUP_SUMMARY);
@@ -136,7 +176,7 @@ phase7_func(
 	}
 
 	error = -ptvar_alloc(scrub_nproc(ctx), sizeof(struct summary_counts),
-			NULL, &ptvar);
+			summary_count_init, &ptvar);
 	if (error) {
 		str_liberror(ctx, error, _("setting up block counter"));
 		return error;
@@ -153,6 +193,9 @@ phase7_func(
 	}
 	ptvar_free(ptvar);
 
+	/* Preserve free space histograms for phase 8. */
+	hist_move(&ctx->datadev_hist, &totalcount.datadev_hist);
+
 	/* Scan the whole fs. */
 	error = scrub_count_all_inodes(ctx, &counted_inodes);
 	if (error) {
diff --git a/scrub/xfs_scrub.c b/scrub/xfs_scrub.c
index adf9d13e5090..2894f6148e10 100644
--- a/scrub/xfs_scrub.c
+++ b/scrub/xfs_scrub.c
@@ -18,6 +18,7 @@
 #include "descr.h"
 #include "unicrash.h"
 #include "progress.h"
+#include "libfrog/histogram.h"
 
 /*
  * XFS Online Metadata Scrub (and Repair)
@@ -669,6 +670,8 @@ main(
 	int			ret = SCRUB_RET_SUCCESS;
 	int			error;
 
+	hist_init(&ctx.datadev_hist);
+
 	fprintf(stdout, "EXPERIMENTAL xfs_scrub program in use! Use at your own risk!\n");
 	fflush(stdout);
 
@@ -883,6 +886,8 @@ main(
 out_unicrash:
 	unicrash_unload();
 
+	hist_free(&ctx.datadev_hist);
+
 	/*
 	 * If we're being run as a service, the return code must fit the LSB
 	 * init script action error guidelines, which is to say that we
diff --git a/scrub/xfs_scrub.h b/scrub/xfs_scrub.h
index 6272a36879e7..1a28f0cc847e 100644
--- a/scrub/xfs_scrub.h
+++ b/scrub/xfs_scrub.h
@@ -7,6 +7,7 @@
 #define XFS_SCRUB_XFS_SCRUB_H_
 
 #include "libfrog/fsgeom.h"
+#include "libfrog/histogram.h"
 
 extern char *progname;
 
@@ -86,6 +87,9 @@ struct scrub_ctx {
 	unsigned long long	preens;
 	bool			scrub_setup_succeeded;
 	bool			preen_triggers[XFS_SCRUB_TYPE_NR];
+
+	/* Free space histograms, in fsb */
+	struct histogram	datadev_hist;
 };
 
 /* Phase helper functions */


  parent reply	other threads:[~2024-07-02  1:04 UTC|newest]

Thread overview: 299+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-02  0:43 [PATCHBOMB] xfsprogs: program changes (mostly xfs_scrub) for 6.10 Darrick J. Wong
2024-07-02  0:49 ` [PATCHSET v30.7 01/16] xfsprogs: atomic file updates Darrick J. Wong
2024-07-02  0:53   ` [PATCH 01/12] man: document the exchange-range ioctl Darrick J. Wong
2024-07-02  5:08     ` Christoph Hellwig
2024-07-02  0:54   ` [PATCH 02/12] man: document XFS_FSOP_GEOM_FLAGS_EXCHRANGE Darrick J. Wong
2024-07-02  5:08     ` Christoph Hellwig
2024-07-02  0:54   ` [PATCH 03/12] libhandle: add support for bulkstat v5 Darrick J. Wong
2024-07-02  5:09     ` Christoph Hellwig
2024-07-02 19:48       ` Darrick J. Wong
2024-07-02  0:54   ` [PATCH 04/12] libfrog: add support for exchange range ioctl family Darrick J. Wong
2024-07-02  5:09     ` Christoph Hellwig
2024-07-02  0:54   ` [PATCH 05/12] xfs_db: advertise exchange-range in the version command Darrick J. Wong
2024-07-02  5:10     ` Christoph Hellwig
2024-07-02  0:55   ` [PATCH 06/12] xfs_logprint: support dumping exchmaps log items Darrick J. Wong
2024-07-02  5:11     ` Christoph Hellwig
2024-07-02 19:49       ` Darrick J. Wong
2024-07-02  0:55   ` [PATCH 07/12] xfs_fsr: convert to bulkstat v5 ioctls Darrick J. Wong
2024-07-02  5:13     ` Christoph Hellwig
2024-07-02 19:51       ` Darrick J. Wong
2024-07-02  0:55   ` [PATCH 08/12] xfs_fsr: skip the xattr/forkoff levering with the newer swapext implementations Darrick J. Wong
2024-07-02  5:14     ` Christoph Hellwig
2024-07-02  0:55   ` [PATCH 09/12] xfs_io: create exchangerange command to test file range exchange ioctl Darrick J. Wong
2024-07-02  5:15     ` Christoph Hellwig
2024-07-02 19:53       ` Darrick J. Wong
2024-07-02  0:56   ` [PATCH 10/12] libfrog: advertise exchange-range support Darrick J. Wong
2024-07-02  5:15     ` Christoph Hellwig
2024-07-02  0:56   ` [PATCH 11/12] xfs_repair: add exchange-range to file systems Darrick J. Wong
2024-07-02  5:15     ` Christoph Hellwig
2024-07-02  0:56   ` [PATCH 12/12] mkfs: add a formatting option for exchange-range Darrick J. Wong
2024-07-02  5:16     ` Christoph Hellwig
2024-07-02  0:49 ` [PATCHSET v30.7 02/16] xfsprogs: inode-related repair fixes Darrick J. Wong
2024-07-02  0:56   ` [PATCH 1/3] xfs_{db,repair}: add an explicit owner field to xfs_da_args Darrick J. Wong
2024-07-02  5:16     ` Christoph Hellwig
2024-07-02  0:57   ` [PATCH 2/3] libxfs: port the bumplink function from the kernel Darrick J. Wong
2024-07-02  5:16     ` Christoph Hellwig
2024-07-02  0:57   ` [PATCH 3/3] mkfs/repair: pin inodes that would otherwise overflow link count Darrick J. Wong
2024-07-02  5:17     ` Christoph Hellwig
2024-07-02  0:50 ` [PATCHSET v30.7 03/16] xfs_scrub: detect deceptive filename extensions Darrick J. Wong
2024-07-02  0:57   ` [PATCH 01/13] xfs_scrub: use proper UChar string iterators Darrick J. Wong
2024-07-02  5:18     ` Christoph Hellwig
2024-07-02  0:57   ` [PATCH 02/13] xfs_scrub: hoist code that removes ignorable characters Darrick J. Wong
2024-07-02  5:21     ` Christoph Hellwig
2024-07-02  0:58   ` [PATCH 03/13] xfs_scrub: add a couple of omitted invisible code points Darrick J. Wong
2024-07-02  5:22     ` Christoph Hellwig
2024-07-03  1:59       ` Darrick J. Wong
2024-07-03  4:27         ` Christoph Hellwig
2024-07-03  5:02           ` Darrick J. Wong
2024-07-03 18:35             ` Darrick J. Wong
2024-07-04  7:22               ` Christoph Hellwig
2024-07-02  0:58   ` [PATCH 04/13] xfs_scrub: avoid potential UAF after freeing a duplicate name entry Darrick J. Wong
2024-07-02  5:22     ` Christoph Hellwig
2024-07-02  0:58   ` [PATCH 05/13] xfs_scrub: guard against libicu returning negative buffer lengths Darrick J. Wong
2024-07-02  5:22     ` Christoph Hellwig
2024-07-02  0:58   ` [PATCH 06/13] xfs_scrub: hoist non-rendering character predicate Darrick J. Wong
2024-07-02  5:23     ` Christoph Hellwig
2024-07-02  0:59   ` [PATCH 07/13] xfs_scrub: store bad flags with the name entry Darrick J. Wong
2024-07-02  5:23     ` Christoph Hellwig
2024-07-02  0:59   ` [PATCH 08/13] xfs_scrub: rename UNICRASH_ZERO_WIDTH to UNICRASH_INVISIBLE Darrick J. Wong
2024-07-02  5:23     ` Christoph Hellwig
2024-07-02  0:59   ` [PATCH 09/13] xfs_scrub: type-coerce the UNICRASH_* flags Darrick J. Wong
2024-07-02  5:24     ` Christoph Hellwig
2024-07-02  0:59   ` [PATCH 10/13] xfs_scrub: reduce size of struct name_entry Darrick J. Wong
2024-07-02  5:24     ` Christoph Hellwig
2024-07-02  1:00   ` [PATCH 11/13] xfs_scrub: rename struct unicrash.normalizer Darrick J. Wong
2024-07-02  5:24     ` Christoph Hellwig
2024-07-02  1:00   ` [PATCH 12/13] xfs_scrub: report deceptive file extensions Darrick J. Wong
2024-07-02  5:25     ` Christoph Hellwig
2024-07-02  1:00   ` [PATCH 13/13] xfs_scrub: dump unicode points Darrick J. Wong
2024-07-02  5:25     ` Christoph Hellwig
2024-07-02  0:50 ` [PATCHSET v30.7 04/16] xfs_scrub: move fstrim to a separate phase Darrick J. Wong
2024-07-02  1:01   ` [PATCH 1/8] xfs_scrub: move FITRIM to phase 8 Darrick J. Wong
2024-07-02  5:27     ` Christoph Hellwig
2024-07-02  1:01   ` [PATCH 2/8] xfs_scrub: ignore phase 8 if the user disabled fstrim Darrick J. Wong
2024-07-02  5:27     ` Christoph Hellwig
2024-07-02  1:01   ` [PATCH 3/8] xfs_scrub: collapse trim_filesystem Darrick J. Wong
2024-07-02  5:27     ` Christoph Hellwig
2024-07-02  1:01   ` [PATCH 4/8] xfs_scrub: fix the work estimation for phase 8 Darrick J. Wong
2024-07-02  5:27     ` Christoph Hellwig
2024-07-02  1:02   ` [PATCH 5/8] xfs_scrub: report FITRIM errors properly Darrick J. Wong
2024-07-02  5:28     ` Christoph Hellwig
2024-07-02  1:02   ` [PATCH 6/8] xfs_scrub: don't call FITRIM after runtime errors Darrick J. Wong
2024-07-02  5:28     ` Christoph Hellwig
2024-07-02  1:02   ` [PATCH 7/8] xfs_scrub: don't trim the first agbno of each AG for better performance Darrick J. Wong
2024-07-02  5:30     ` Christoph Hellwig
2024-07-03  3:45       ` Darrick J. Wong
2024-07-03  3:52     ` [PATCH v30.7.1 7/8] xfs_scrub: improve responsiveness while trimming the filesystem Darrick J. Wong
2024-07-03  4:33       ` Christoph Hellwig
2024-07-03  4:50         ` Darrick J. Wong
2024-07-02  1:02   ` [PATCH 8/8] xfs_scrub: improve progress meter for phase 8 fstrimming Darrick J. Wong
2024-07-02  0:50 ` [PATCHSET v30.7 05/16] xfs_scrub: use free space histograms to reduce fstrim runtime Darrick J. Wong
2024-07-02  1:03   ` [PATCH 1/7] libfrog: hoist free space histogram code Darrick J. Wong
2024-07-02  5:32     ` Christoph Hellwig
2024-07-03  2:47       ` Darrick J. Wong
2024-07-03  4:30         ` Christoph Hellwig
2024-07-03  4:55           ` Darrick J. Wong
2024-07-02  1:03   ` [PATCH 2/7] libfrog: print wider columns for free space histogram Darrick J. Wong
2024-07-02  5:33     ` Christoph Hellwig
2024-07-02  1:03   ` [PATCH 3/7] libfrog: print cdf of free space buckets Darrick J. Wong
2024-07-02  5:33     ` Christoph Hellwig
2024-07-02  1:03   ` [PATCH 4/7] xfs_scrub: don't close stdout when closing the progress bar Darrick J. Wong
2024-07-02  5:33     ` Christoph Hellwig
2024-07-02  1:04   ` [PATCH 5/7] xfs_scrub: remove pointless spacemap.c arguments Darrick J. Wong
2024-07-02  5:33     ` Christoph Hellwig
2024-07-02  1:04   ` Darrick J. Wong [this message]
2024-07-02  5:34     ` [PATCH 6/7] xfs_scrub: collect free space histograms during phase 7 Christoph Hellwig
2024-07-02  1:04   ` [PATCH 7/7] xfs_scrub: tune fstrim minlen parameter based on free space histograms Darrick J. Wong
2024-07-02  5:36     ` Christoph Hellwig
2024-07-03  2:29       ` Darrick J. Wong
2024-07-03  4:29         ` Christoph Hellwig
2024-07-03  4:55           ` Darrick J. Wong
2024-07-03  4:58             ` Christoph Hellwig
2024-07-03  5:04               ` Darrick J. Wong
2024-07-03  5:11                 ` Christoph Hellwig
2024-07-03  5:17                   ` Darrick J. Wong
2024-07-02  0:50 ` [PATCHSET v30.7 06/16] xfs_scrub: tighten security of systemd services Darrick J. Wong
2024-07-02  1:04   ` [PATCH 1/6] xfs_scrub: allow auxiliary pathnames for sandboxing Darrick J. Wong
2024-07-02  5:37     ` Christoph Hellwig
2024-07-02  1:05   ` [PATCH 2/6] xfs_scrub.service: reduce background CPU usage to less than one core if possible Darrick J. Wong
2024-07-02  1:05   ` [PATCH 3/6] xfs_scrub: use dynamic users when running as a systemd service Darrick J. Wong
2024-07-02  1:05   ` [PATCH 4/6] xfs_scrub: tighten up the security on the background " Darrick J. Wong
2024-07-02  1:06   ` [PATCH 5/6] xfs_scrub_fail: " Darrick J. Wong
2024-07-02  5:37     ` Christoph Hellwig
2024-07-02  1:06   ` [PATCH 6/6] xfs_scrub_all: " Darrick J. Wong
2024-07-02  5:37     ` Christoph Hellwig
2024-07-02  0:51 ` [PATCHSET v30.7 07/16] xfs_scrub_all: automatic media scan service Darrick J. Wong
2024-07-02  1:06   ` [PATCH 1/6] xfs_scrub_all: only use the xfs_scrub@ systemd services in service mode Darrick J. Wong
2024-07-02  5:38     ` Christoph Hellwig
2024-07-02  1:06   ` [PATCH 2/6] xfs_scrub_all: remove journalctl background process Darrick J. Wong
2024-07-02  5:38     ` Christoph Hellwig
2024-07-02  1:07   ` [PATCH 3/6] xfs_scrub_all: support metadata+media scans of all filesystems Darrick J. Wong
2024-07-02  5:39     ` Christoph Hellwig
2024-07-02  1:07   ` [PATCH 4/6] xfs_scrub_all: enable periodic file data scrubs automatically Darrick J. Wong
2024-07-02  5:39     ` Christoph Hellwig
2024-07-02  1:07   ` [PATCH 5/6] xfs_scrub_all: trigger automatic media scans once per month Darrick J. Wong
2024-07-02  5:39     ` Christoph Hellwig
2024-07-02  1:07   ` [PATCH 6/6] xfs_scrub_all: failure reporting for the xfs_scrub_all job Darrick J. Wong
2024-07-02  5:39     ` Christoph Hellwig
2024-07-02  0:51 ` [PATCHSET v30.7 08/16] xfs_scrub_all: improve systemd handling Darrick J. Wong
2024-07-02  1:08   ` [PATCH 1/5] xfs_scrub_all: encapsulate all the subprocess code in an object Darrick J. Wong
2024-07-02  5:40     ` Christoph Hellwig
2024-07-02  1:08   ` [PATCH 2/5] xfs_scrub_all: encapsulate all the systemctl " Darrick J. Wong
2024-07-02  5:41     ` Christoph Hellwig
2024-07-02  1:08   ` [PATCH 3/5] xfs_scrub_all: add CLI option for easier debugging Darrick J. Wong
2024-07-02  5:42     ` Christoph Hellwig
2024-07-02  1:08   ` [PATCH 4/5] xfs_scrub_all: convert systemctl calls to dbus Darrick J. Wong
2024-07-02  5:42     ` Christoph Hellwig
2024-07-02  1:09   ` [PATCH 5/5] xfs_scrub_all: implement retry and backoff for dbus calls Darrick J. Wong
2024-07-02  5:42     ` Christoph Hellwig
2024-07-02  0:51 ` [PATCHSET v30.7 09/16] xfs_scrub: automatic optimization by default Darrick J. Wong
2024-07-02  1:09   ` [PATCH 1/3] xfs_scrub: automatic downgrades to dry-run mode in service mode Darrick J. Wong
2024-07-02  5:43     ` Christoph Hellwig
2024-07-02  1:09   ` [PATCH 2/3] xfs_scrub: add an optimization-only mode Darrick J. Wong
2024-07-02  5:43     ` Christoph Hellwig
2024-07-02  1:09   ` [PATCH 3/3] debian: enable xfs_scrub_all systemd timer services by default Darrick J. Wong
2024-07-02  5:44     ` Christoph Hellwig
2024-07-03  2:59       ` Darrick J. Wong
2024-07-03  4:31         ` Christoph Hellwig
2024-07-03  5:01           ` Darrick J. Wong
2024-07-09 22:53             ` Darrick J. Wong
2024-07-10  6:18               ` Christoph Hellwig
2024-07-16 16:46                 ` Darrick J. Wong
2024-07-17  4:59                   ` Christoph Hellwig
2024-07-17 16:15                     ` Darrick J. Wong
2024-07-17 16:45                       ` Christoph Hellwig
2024-07-22  4:12                         ` Darrick J. Wong
2024-07-22 12:34                           ` Christoph Hellwig
2024-07-23 23:29                             ` Darrick J. Wong
2024-07-24 13:18                               ` Christoph Hellwig
2024-07-16 16:47                 ` [RFC PATCH 1/2] misc: shift install targets Darrick J. Wong
2024-07-16 16:49                   ` [RFC PATCH 2/2] debian: create a new package for automatic self-healing Darrick J. Wong
2024-07-17  5:00                   ` [RFC PATCH 1/2] misc: shift install targets Christoph Hellwig
2024-07-17 16:19                     ` Darrick J. Wong
2024-07-17 16:43                       ` Christoph Hellwig
2024-07-02  0:51 ` [PATCHSET v13.7 10/16] xfsprogs: improve extended attribute validation Darrick J. Wong
2024-07-02  1:10   ` [PATCH 1/3] xfs_repair: check free space requirements before allowing upgrades Darrick J. Wong
2024-07-02  5:44     ` Christoph Hellwig
2024-07-02  1:10   ` [PATCH 2/3] xfs_repair: enforce one namespace bit per extended attribute Darrick J. Wong
2024-07-02  5:44     ` Christoph Hellwig
2024-07-02  1:10   ` [PATCH 3/3] xfs_repair: check for unknown flags in attr entries Darrick J. Wong
2024-07-02  5:45     ` Christoph Hellwig
2024-07-02  0:52 ` [PATCHSET v13.7 11/16] xfsprogs: Parent Pointers Darrick J. Wong
2024-07-02  1:10   ` [PATCH 01/24] libxfs: create attr log item opcodes and formats for parent pointers Darrick J. Wong
2024-07-02  6:24     ` Christoph Hellwig
2024-07-02  1:11   ` [PATCH 02/24] xfs_{db,repair}: implement new attr hash value function Darrick J. Wong
2024-07-02  6:24     ` Christoph Hellwig
2024-07-02  1:11   ` [PATCH 03/24] xfs_logprint: dump new attr log item fields Darrick J. Wong
2024-07-02  6:25     ` Christoph Hellwig
2024-07-02 20:02       ` Darrick J. Wong
2024-07-02  1:11   ` [PATCH 04/24] man: document the XFS_IOC_GETPARENTS ioctl Darrick J. Wong
2024-07-02  6:25     ` Christoph Hellwig
2024-07-02  1:11   ` [PATCH 05/24] libfrog: report parent pointers to userspace Darrick J. Wong
2024-07-02  6:25     ` Christoph Hellwig
2024-07-02  1:12   ` [PATCH 06/24] libfrog: add parent pointer support code Darrick J. Wong
2024-07-02  6:26     ` Christoph Hellwig
2024-07-02  1:12   ` [PATCH 07/24] xfs_io: adapt parent command to new parent pointer ioctls Darrick J. Wong
2024-07-02  6:26     ` Christoph Hellwig
2024-07-02  1:12   ` [PATCH 08/24] xfs_io: Add i, n and f flags to parent command Darrick J. Wong
2024-07-02  6:26     ` Christoph Hellwig
2024-07-02  1:13   ` [PATCH 09/24] xfs_logprint: decode parent pointers in ATTRI items fully Darrick J. Wong
2024-07-02  6:27     ` Christoph Hellwig
2024-07-02  1:13   ` [PATCH 10/24] xfs_spaceman: report file paths Darrick J. Wong
2024-07-02  6:27     ` Christoph Hellwig
2024-07-02  1:13   ` [PATCH 11/24] xfs_scrub: use parent pointers when possible to report file operations Darrick J. Wong
2024-07-02  6:27     ` Christoph Hellwig
2024-07-02  1:13   ` [PATCH 12/24] xfs_scrub: use parent pointers to report lost file data Darrick J. Wong
2024-07-02  6:28     ` Christoph Hellwig
2024-07-02  1:14   ` [PATCH 13/24] xfs_db: report parent pointers in version command Darrick J. Wong
2024-07-02  6:28     ` Christoph Hellwig
2024-07-02  1:14   ` [PATCH 14/24] xfs_db: report parent bit on xattrs Darrick J. Wong
2024-07-02  6:28     ` Christoph Hellwig
2024-07-02  1:14   ` [PATCH 15/24] xfs_db: report parent pointers embedded in xattrs Darrick J. Wong
2024-07-02  6:28     ` Christoph Hellwig
2024-07-02  1:14   ` [PATCH 16/24] xfs_db: obfuscate dirent and parent pointer names consistently Darrick J. Wong
2024-07-02  6:33     ` Christoph Hellwig
2024-07-02  1:15   ` [PATCH 17/24] libxfs: export attr3_leaf_hdr_from_disk via libxfs_api_defs.h Darrick J. Wong
2024-07-02  6:35     ` Christoph Hellwig
2024-07-02  1:15   ` [PATCH 18/24] xfs_db: add a parents command to list the parents of a file Darrick J. Wong
2024-07-02  6:35     ` Christoph Hellwig
2024-07-02  1:15   ` [PATCH 19/24] xfs_db: make attr_set and attr_remove handle parent pointers Darrick J. Wong
2024-07-02  6:36     ` Christoph Hellwig
2024-07-02  1:15   ` [PATCH 20/24] xfs_db: add link and unlink expert commands Darrick J. Wong
2024-07-02  6:36     ` Christoph Hellwig
2024-07-02  1:16   ` [PATCH 21/24] xfs_db: compute hashes of parent pointers Darrick J. Wong
2024-07-02  6:37     ` Christoph Hellwig
2024-07-02  1:16   ` [PATCH 22/24] libxfs: create new files with attr forks if necessary Darrick J. Wong
2024-07-02  6:37     ` Christoph Hellwig
2024-07-02  1:16   ` [PATCH 23/24] mkfs: Add parent pointers during protofile creation Darrick J. Wong
2024-07-02  6:37     ` Christoph Hellwig
2024-07-02  1:16   ` [PATCH 24/24] mkfs: enable formatting with parent pointers Darrick J. Wong
2024-07-02  6:38     ` Christoph Hellwig
2024-07-02  0:52 ` [PATCHSET v13.7 12/16] xfsprogs: scrubbing for " Darrick J. Wong
2024-07-02  1:17   ` [PATCH 1/2] xfs: create a blob array data structure Darrick J. Wong
2024-07-02  6:41     ` Christoph Hellwig
2024-07-02  1:17   ` [PATCH 2/2] man2: update ioctl_xfs_scrub_metadata.2 for parent pointers Darrick J. Wong
2024-07-02  6:41     ` Christoph Hellwig
2024-07-02  0:52 ` [PATCHSET v13.7 13/16] xfsprogs: offline repair " Darrick J. Wong
2024-07-02  1:17   ` [PATCH 01/12] xfs_db: remove some boilerplate from xfs_attr_set Darrick J. Wong
2024-07-02  6:41     ` Christoph Hellwig
2024-07-02  1:17   ` [PATCH 02/12] xfs_db: actually report errors from libxfs_attr_set Darrick J. Wong
2024-07-02  6:41     ` Christoph Hellwig
2024-07-02  1:18   ` [PATCH 03/12] xfs_repair: junk parent pointer attributes when filesystem doesn't support them Darrick J. Wong
2024-07-02  6:42     ` Christoph Hellwig
2024-07-02  1:18   ` [PATCH 04/12] xfs_repair: add parent pointers when messing with /lost+found Darrick J. Wong
2024-07-02  6:42     ` Christoph Hellwig
2024-07-02  1:18   ` [PATCH 05/12] xfs_repair: junk duplicate hashtab entries when processing sf dirents Darrick J. Wong
2024-07-02  6:43     ` Christoph Hellwig
2024-07-02  1:19   ` [PATCH 06/12] xfs_repair: build a parent pointer index Darrick J. Wong
2024-07-02  6:45     ` Christoph Hellwig
2024-07-02  1:19   ` [PATCH 07/12] xfs_repair: move the global dirent name store to a separate object Darrick J. Wong
2024-07-02  6:45     ` Christoph Hellwig
2024-07-02  1:19   ` [PATCH 08/12] xfs_repair: deduplicate strings stored in string blob Darrick J. Wong
2024-07-02  6:46     ` Christoph Hellwig
2024-07-02  1:19   ` [PATCH 09/12] xfs_repair: check parent pointers Darrick J. Wong
2024-07-02  6:47     ` Christoph Hellwig
2024-07-02  1:20   ` [PATCH 10/12] xfs_repair: dump garbage parent pointer attributes Darrick J. Wong
2024-07-02  6:47     ` Christoph Hellwig
2024-07-02  1:20   ` [PATCH 11/12] xfs_repair: update ondisk parent pointer records Darrick J. Wong
2024-07-02  6:47     ` Christoph Hellwig
2024-07-02  1:20   ` [PATCH 12/12] xfs_repair: wipe ondisk parent pointers when there are none Darrick J. Wong
2024-07-02  6:47     ` Christoph Hellwig
2024-07-02  0:52 ` [PATCHSET v13.7 14/16] xfsprogs: detect and correct directory tree problems Darrick J. Wong
2024-07-02  1:20   ` [PATCH 1/5] libfrog: add directory tree structure scrubber to scrub library Darrick J. Wong
2024-07-02  6:48     ` Christoph Hellwig
2024-07-02  1:21   ` [PATCH 2/5] xfs_spaceman: report directory tree corruption in the health information Darrick J. Wong
2024-07-02  6:48     ` Christoph Hellwig
2024-07-02  1:21   ` [PATCH 3/5] xfs_scrub: fix erroring out of check_inode_names Darrick J. Wong
2024-07-02  6:48     ` Christoph Hellwig
2024-07-02  1:21   ` [PATCH 4/5] xfs_scrub: detect and repair directory tree corruptions Darrick J. Wong
2024-07-02  6:49     ` Christoph Hellwig
2024-07-02  1:21   ` [PATCH 5/5] xfs_scrub: defer phase5 file scans if dirloop fails Darrick J. Wong
2024-07-02  6:49     ` Christoph Hellwig
2024-07-02  0:53 ` [PATCHSET v30.7 15/16] xfs_scrub: vectorize kernel calls Darrick J. Wong
2024-07-02  1:22   ` [PATCH 01/10] man: document vectored scrub mode Darrick J. Wong
2024-07-02  6:56     ` Christoph Hellwig
2024-07-02  1:22   ` [PATCH 02/10] libfrog: support vectored scrub Darrick J. Wong
2024-07-02  6:56     ` Christoph Hellwig
2024-07-02  1:22   ` [PATCH 03/10] xfs_io: " Darrick J. Wong
2024-07-02  6:57     ` Christoph Hellwig
2024-07-02  1:22   ` [PATCH 04/10] xfs_scrub: split the scrub epilogue code into a separate function Darrick J. Wong
2024-07-02  6:57     ` Christoph Hellwig
2024-07-02  1:23   ` [PATCH 05/10] xfs_scrub: split the repair " Darrick J. Wong
2024-07-02  6:57     ` Christoph Hellwig
2024-07-02  1:23   ` [PATCH 06/10] xfs_scrub: convert scrub and repair epilogues to use xfs_scrub_vec Darrick J. Wong
2024-07-02  6:57     ` Christoph Hellwig
2024-07-02  1:23   ` [PATCH 07/10] xfs_scrub: vectorize scrub calls Darrick J. Wong
2024-07-02  6:58     ` Christoph Hellwig
2024-07-02  1:23   ` [PATCH 08/10] xfs_scrub: vectorize repair calls Darrick J. Wong
2024-07-02  6:58     ` Christoph Hellwig
2024-07-02  1:24   ` [PATCH 09/10] xfs_scrub: use scrub barriers to reduce kernel calls Darrick J. Wong
2024-07-02  6:58     ` Christoph Hellwig
2024-07-02  1:24   ` [PATCH 10/10] xfs_scrub: try spot repairs of metadata items to make scrub progress Darrick J. Wong
2024-07-02  6:59     ` Christoph Hellwig
2024-07-02  0:53 ` [PATCHSET v30.7 16/16] xfs_repair: small remote symlinks are ok Darrick J. Wong
2024-07-02  1:24   ` [PATCH 1/1] xfs_repair: allow symlinks with short remote targets Darrick J. Wong
2024-07-02  6:59     ` Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2024-07-30  0:19 [PATCHSET v30.9 13/23] xfs_scrub: use free space histograms to reduce fstrim runtime Darrick J. Wong
2024-07-30  1:12 ` [PATCH 6/7] xfs_scrub: collect free space histograms during phase 7 Darrick J. Wong
2024-07-03 21:47 [PATCHSET v30.8] xfs_scrub: use free space histograms to reduce fstrim runtime Darrick J. Wong
2024-07-03 21:48 ` [PATCH 6/7] xfs_scrub: collect free space histograms during phase 7 Darrick J. Wong
2023-12-31 19:48 [PATCHSET v29.0 33/40] xfs_scrub: use free space histograms to reduce fstrim runtime Darrick J. Wong
2023-12-31 22:52 ` [PATCH 6/7] xfs_scrub: collect free space histograms during phase 7 Darrick J. Wong
2023-05-26  0:39 [PATCHSET v25.0 0/7] xfs_scrub: use free space histograms to reduce fstrim runtime Darrick J. Wong
2023-05-26  1:52 ` [PATCH 6/7] xfs_scrub: collect free space histograms during phase 7 Darrick J. Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=171988118672.2007921.6461553875020192436.stgit@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=cem@kernel.org \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).