From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org, cem@kernel.org
Cc: Christoph Hellwig <hch@lst.de>, linux-xfs@vger.kernel.org
Subject: [PATCH 7/7] xfs_scrub: tune fstrim minlen parameter based on free space histograms
Date: Mon, 29 Jul 2024 18:12:50 -0700 [thread overview]
Message-ID: <172229848553.1349623.5586535069096068794.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <172229848439.1349623.8570132525895775451.stgit@frogsfrogsfrogs>
From: Darrick J. Wong <djwong@kernel.org>
Currently, phase 8 runs very slowly on filesystems with a lot of small
free space extents. To reduce the amount of time spent on fstrim
activities during phase 8, we want to balance estimated runtime against
completeness of the trim. In short, the goal is to reduce runtime by
avoiding small trim requests.
At the start of phase 8, a CDF is computed in decreasing order of extent
length from the histogram buckets created during the fsmap scan in phase
7. A point corresponding to the fstrim percentage target is chosen from
the CDF and mapped back to a histogram bucket, and free space extents
smaller than that amount are ommitted from fstrim.
On my aging /home filesystem, the free space histogram reported by
xfs_spaceman looks like this:
from to extents blocks pct blkcdf extcdf
1 1 121953 121953 0.04 100.00 100.00
2 3 124741 299694 0.09 99.96 81.16
4 7 113492 593763 0.18 99.87 61.89
8 15 109215 1179524 0.36 99.69 44.36
16 31 76972 1695455 0.52 99.33 27.48
32 63 48655 2219667 0.68 98.82 15.59
64 127 31398 2876898 0.88 98.14 8.08
128 255 8014 1447920 0.44 97.27 3.23
256 511 4142 1501758 0.46 96.82 1.99
512 1023 2433 1768732 0.54 96.37 1.35
1024 2047 1795 2648460 0.81 95.83 0.97
2048 4095 1429 4206103 1.28 95.02 0.69
4096 8191 1045 6162111 1.88 93.74 0.47
8192 16383 791 9242745 2.81 91.87 0.31
16384 32767 473 10883977 3.31 89.06 0.19
32768 65535 272 12385566 3.77 85.74 0.12
65536 131071 192 18098739 5.51 81.98 0.07
131072 262143 108 20675199 6.29 76.47 0.04
262144 524287 80 29061285 8.84 70.18 0.03
524288 1048575 39 29002829 8.83 61.33 0.02
1048576 2097151 25 36824985 11.21 52.51 0.01
2097152 4194303 32 101727192 30.95 41.30 0.01
4194304 8388607 7 34007410 10.35 10.35 0.00
From this table, we see that free space extents that are 16 blocks or
longer constitute 99.3% of the free space in the filesystem but only
27.5% of the extents. If we set the fstrim minlen parameter to 16
blocks, that means that we can trim over 99% of the space in one third
of the time it would take to trim everything.
Add a new -o fstrim_pct= option to xfs_scrub just in case there are
users out there who want a different percentage. For example, accepting
a 95% trim would net us a speed increase of nearly two orders of
magnitude, ignoring system call overhead. Setting it to 100% will trim
everything, just like fstrim(8).
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
libfrog/histogram.c | 4 +-
libfrog/histogram.h | 3 ++
man/man8/xfs_scrub.8 | 16 +++++++++
scrub/phase8.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++---
scrub/vfs.c | 4 ++
scrub/vfs.h | 2 +
scrub/xfs_scrub.c | 38 ++++++++++++++++++++-
scrub/xfs_scrub.h | 12 +++++++
8 files changed, 160 insertions(+), 10 deletions(-)
diff --git a/libfrog/histogram.c b/libfrog/histogram.c
index 543c8a636..f6a749e3c 100644
--- a/libfrog/histogram.c
+++ b/libfrog/histogram.c
@@ -109,7 +109,7 @@ hist_free(
* in the long tail of small extents, e.g. 98% of the free space extents are
* larger than 31 blocks.
*/
-static struct histogram_cdf *
+struct histogram_cdf *
hist_cdf(
const struct histogram *hs)
{
@@ -151,7 +151,7 @@ hist_cdf(
}
/* Free all data associated with a histogram cdf. */
-static void
+void
histcdf_free(
struct histogram_cdf *cdf)
{
diff --git a/libfrog/histogram.h b/libfrog/histogram.h
index 002ad78ca..9a0fedeff 100644
--- a/libfrog/histogram.h
+++ b/libfrog/histogram.h
@@ -68,6 +68,9 @@ static inline unsigned int hist_buckets(const struct histogram *hs)
return hs->nr_buckets;
}
+struct histogram_cdf *hist_cdf(const struct histogram *hs);
+void histcdf_free(struct histogram_cdf *cdf);
+
void hist_import(struct histogram *dest, const struct histogram *src);
void hist_move(struct histogram *dest, struct histogram *src);
diff --git a/man/man8/xfs_scrub.8 b/man/man8/xfs_scrub.8
index 404baba69..b9f253e1b 100644
--- a/man/man8/xfs_scrub.8
+++ b/man/man8/xfs_scrub.8
@@ -100,6 +100,22 @@ The
supported are:
.RS 1.0i
.TP
+.BI fstrim_pct= percentage
+To constrain the amount of time spent on fstrim activities during phase 8,
+this program tries to balance estimated runtime against completeness of the
+trim.
+In short, the program avoids small trim requests to save time.
+
+During phase 7, a log-scale histogram of free space extents is constructed.
+At the start of phase 8, a CDF is computed in decreasing order of extent
+length from the histogram buckets.
+A point corresponding to the fstrim percentage target is chosen from the CDF
+and mapped back to a histogram bucket.
+Free space extents at least as long as the bucket size are trimmed.
+Smaller extents are ignored.
+
+By default, the percentage threshold is 99%.
+.TP
.BI iwarn
Treat informational messages as warnings.
This will result in a nonzero return code, and a higher logging level.
diff --git a/scrub/phase8.c b/scrub/phase8.c
index e35bf11bf..1c88460c3 100644
--- a/scrub/phase8.c
+++ b/scrub/phase8.c
@@ -11,6 +11,7 @@
#include "list.h"
#include "libfrog/paths.h"
#include "libfrog/workqueue.h"
+#include "libfrog/histogram.h"
#include "xfs_scrub.h"
#include "common.h"
#include "progress.h"
@@ -57,10 +58,12 @@ static int
fstrim_fsblocks(
struct scrub_ctx *ctx,
uint64_t start_fsb,
- uint64_t fsbcount)
+ uint64_t fsbcount,
+ uint64_t minlen_fsb)
{
uint64_t start = cvt_off_fsb_to_b(&ctx->mnt, start_fsb);
uint64_t len = cvt_off_fsb_to_b(&ctx->mnt, fsbcount);
+ uint64_t minlen = cvt_off_fsb_to_b(&ctx->mnt, minlen_fsb);
int error;
while (len > 0) {
@@ -68,7 +71,7 @@ fstrim_fsblocks(
run = min(len, FSTRIM_MAX_BYTES);
- error = fstrim(ctx, start, run);
+ error = fstrim(ctx, start, run, minlen);
if (error == EOPNOTSUPP) {
/* Pretend we finished all the work. */
progress_add(len);
@@ -78,9 +81,10 @@ fstrim_fsblocks(
char descr[DESCR_BUFSZ];
snprintf(descr, sizeof(descr) - 1,
- _("fstrim start 0x%llx run 0x%llx"),
+ _("fstrim start 0x%llx run 0x%llx minlen 0x%llx"),
(unsigned long long)start,
- (unsigned long long)run);
+ (unsigned long long)run,
+ (unsigned long long)minlen);
str_liberror(ctx, error, descr);
return error;
}
@@ -93,6 +97,80 @@ fstrim_fsblocks(
return 0;
}
+/*
+ * Return the smallest minlen that still enables us to discard the specified
+ * number of free blocks. Returns 0 if something goes wrong, which means no
+ * minlen threshold for discard.
+ */
+static uint64_t
+minlen_for_threshold(
+ const struct histogram *hs,
+ uint64_t blk_threshold)
+{
+ struct histogram_cdf *cdf;
+ unsigned int i;
+ uint64_t ret = 0;
+
+ /* Insufficient samples to make a meaningful histogram */
+ if (hs->tot_obs < hs->nr_buckets * 10)
+ return 0;
+
+ cdf = hist_cdf(hs);
+ if (!cdf)
+ return 0;
+
+ for (i = 1; i < hs->nr_buckets; i++) {
+ if (cdf->buckets[i].sum < blk_threshold) {
+ ret = hs->buckets[i - 1].low;
+ break;
+ }
+ }
+
+ histcdf_free(cdf);
+ return ret;
+}
+
+/* Compute a suitable minlen parameter for fstrim. */
+static uint64_t
+fstrim_compute_minlen(
+ const struct scrub_ctx *ctx,
+ const struct histogram *freesp_hist)
+{
+ uint64_t ret;
+ double blk_threshold = 0;
+ unsigned int ag_max_usable;
+
+ /*
+ * The kernel will reject a minlen that's larger than m_ag_max_usable.
+ * We can't calculate or query that value directly, so we guesstimate
+ * that it's 95% of the AG size.
+ */
+ ag_max_usable = ctx->mnt.fsgeom.agblocks * 95 / 100;
+
+ if (debug > 1) {
+ struct histogram_strings hstr = {
+ .sum = _("free space blocks"),
+ .observations = _("free space extents"),
+ };
+
+ hist_print(freesp_hist, &hstr);
+ }
+
+ ret = minlen_for_threshold(freesp_hist,
+ freesp_hist->tot_sum * ctx->fstrim_block_pct);
+
+ if (debug > 1)
+ printf(_("fstrim minlen %lld threshold %lld ag_max_usable %u\n"),
+ (unsigned long long)ret,
+ (unsigned long long)blk_threshold,
+ ag_max_usable);
+ if (ret > ag_max_usable)
+ ret = ag_max_usable;
+ if (ret == 1)
+ ret = 0;
+ return ret;
+}
+
/* Trim each AG on the data device. */
static int
fstrim_datadev(
@@ -100,8 +178,11 @@ fstrim_datadev(
{
struct xfs_fsop_geom *geo = &ctx->mnt.fsgeom;
uint64_t fsbno;
+ uint64_t minlen_fsb;
int error;
+ minlen_fsb = fstrim_compute_minlen(ctx, &ctx->datadev_hist);
+
for (fsbno = 0; fsbno < geo->datablocks; fsbno += geo->agblocks) {
uint64_t fsbcount;
@@ -112,7 +193,7 @@ fstrim_datadev(
*/
progress_add(geo->blocksize);
fsbcount = min(geo->datablocks - fsbno, geo->agblocks);
- error = fstrim_fsblocks(ctx, fsbno, fsbcount);
+ error = fstrim_fsblocks(ctx, fsbno, fsbcount, minlen_fsb);
if (error)
return error;
}
diff --git a/scrub/vfs.c b/scrub/vfs.c
index cc958ba94..22c19485a 100644
--- a/scrub/vfs.c
+++ b/scrub/vfs.c
@@ -300,11 +300,13 @@ int
fstrim(
struct scrub_ctx *ctx,
uint64_t start,
- uint64_t len)
+ uint64_t len,
+ uint64_t minlen)
{
struct fstrim_range range = {
.start = start,
.len = len,
+ .minlen = minlen,
};
if (ioctl(ctx->mnt.fd, FITRIM, &range) == 0)
diff --git a/scrub/vfs.h b/scrub/vfs.h
index 1af8d80d1..f0cfd53c2 100644
--- a/scrub/vfs.h
+++ b/scrub/vfs.h
@@ -24,6 +24,6 @@ typedef int (*scan_fs_tree_dirent_fn)(struct scrub_ctx *, const char *,
int scan_fs_tree(struct scrub_ctx *ctx, scan_fs_tree_dir_fn dir_fn,
scan_fs_tree_dirent_fn dirent_fn, void *arg);
-int fstrim(struct scrub_ctx *ctx, uint64_t start, uint64_t len);
+int fstrim(struct scrub_ctx *ctx, uint64_t start, uint64_t len, uint64_t minlen);
#endif /* XFS_SCRUB_VFS_H_ */
diff --git a/scrub/xfs_scrub.c b/scrub/xfs_scrub.c
index 2894f6148..296d814ec 100644
--- a/scrub/xfs_scrub.c
+++ b/scrub/xfs_scrub.c
@@ -622,11 +622,13 @@ report_outcome(
*/
enum o_opt_nums {
IWARN = 0,
+ FSTRIM_PCT,
O_MAX_OPTS,
};
static char *o_opts[] = {
[IWARN] = "iwarn",
+ [FSTRIM_PCT] = "fstrim_pct",
[O_MAX_OPTS] = NULL,
};
@@ -635,8 +637,11 @@ parse_o_opts(
struct scrub_ctx *ctx,
char *p)
{
+ double dval;
+
while (*p != '\0') {
char *val;
+ char *endp;
switch (getsubopt(&p, o_opts, &val)) {
case IWARN:
@@ -647,6 +652,35 @@ parse_o_opts(
}
info_is_warning = true;
break;
+ case FSTRIM_PCT:
+ if (!val) {
+ fprintf(stderr,
+ _("-o fstrim_pct requires a parameter\n"));
+ usage();
+ }
+
+ errno = 0;
+ dval = strtod(val, &endp);
+
+ if (*endp) {
+ fprintf(stderr,
+ _("-o fstrim_pct must be a floating point number\n"));
+ usage();
+ }
+ if (errno) {
+ fprintf(stderr,
+ _("-o fstrim_pct: %s\n"),
+ strerror(errno));
+ usage();
+ }
+ if (dval <= 0 || dval > 100) {
+ fprintf(stderr,
+ _("-o fstrim_pct must be larger than 0 and less than 100\n"));
+ usage();
+ }
+
+ ctx->fstrim_block_pct = dval / 100.0;
+ break;
default:
usage();
break;
@@ -659,7 +693,9 @@ main(
int argc,
char **argv)
{
- struct scrub_ctx ctx = {0};
+ struct scrub_ctx ctx = {
+ .fstrim_block_pct = FSTRIM_BLOCK_PCT_DEFAULT,
+ };
struct phase_rusage all_pi;
char *mtab = NULL;
FILE *progress_fp = NULL;
diff --git a/scrub/xfs_scrub.h b/scrub/xfs_scrub.h
index 1a28f0cc8..7d48f4bad 100644
--- a/scrub/xfs_scrub.h
+++ b/scrub/xfs_scrub.h
@@ -90,8 +90,20 @@ struct scrub_ctx {
/* Free space histograms, in fsb */
struct histogram datadev_hist;
+
+ /*
+ * Pick the largest value for fstrim minlen such that we trim at least
+ * this much space per volume.
+ */
+ double fstrim_block_pct;
};
+/*
+ * Trim only enough free space extents (in order of decreasing length) to
+ * ensure that this percentage of the free space is trimmed.
+ */
+#define FSTRIM_BLOCK_PCT_DEFAULT (99.0 / 100.0)
+
/* Phase helper functions */
void xfs_shutdown_fs(struct scrub_ctx *ctx);
int scrub_cleanup(struct scrub_ctx *ctx);
next prev parent reply other threads:[~2024-07-30 1:12 UTC|newest]
Thread overview: 306+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-30 0:10 [PATCHBOMB v2] xfsprogs: catch us up to 6.10 Darrick J. Wong
2024-07-30 0:16 ` [PATCHSET 01/23] libxfs: fixes for 6.9 Darrick J. Wong
2024-07-30 0:22 ` [PATCH 1/5] [PATCH v3] Remove support for split-/usr installs Darrick J. Wong
2024-07-30 0:22 ` [PATCH 2/5] repair: btree blocks are never on the RT subvolume Darrick J. Wong
2024-07-30 0:23 ` [PATCH 3/5] xfile: fix missing error unlock in xfile_fcb_find Darrick J. Wong
2024-07-30 0:23 ` [PATCH 4/5] xfs_repair: don't leak the rootdir inode when orphanage already exists Darrick J. Wong
2024-07-30 0:23 ` [PATCH 5/5] xfs_repair: don't crash on -vv Darrick J. Wong
2024-07-30 0:16 ` [PATCHSET 02/23] libxfs: sync with 6.10 Darrick J. Wong
2024-07-30 0:24 ` [PATCH 001/115] xfs: pass xfs_buf lookup flags to xfs_*read_agi Darrick J. Wong
2024-07-30 0:24 ` [PATCH 002/115] xfs: constify xfs_bmap_is_written_extent Darrick J. Wong
2024-07-30 0:24 ` [PATCH 003/115] xfs: introduce new file range exchange ioctl Darrick J. Wong
2024-07-30 0:24 ` [PATCH 004/115] xfs: create a incompat flag for atomic file mapping exchanges Darrick J. Wong
2024-07-30 0:25 ` [PATCH 005/115] xfs: introduce a file mapping exchange log intent item Darrick J. Wong
2024-07-30 0:25 ` [PATCH 006/115] xfs: create deferred log items for file mapping exchanges Darrick J. Wong
2024-07-30 0:25 ` [PATCH 007/115] xfs: add error injection to test file mapping exchange recovery Darrick J. Wong
2024-07-30 0:25 ` [PATCH 008/115] xfs: condense extended attributes after a mapping exchange operation Darrick J. Wong
2024-07-30 0:26 ` [PATCH 009/115] xfs: condense directories " Darrick J. Wong
2024-07-30 0:26 ` [PATCH 010/115] xfs: condense symbolic links " Darrick J. Wong
2024-07-30 0:26 ` [PATCH 011/115] xfs: make file range exchange support realtime files Darrick J. Wong
2024-07-30 0:26 ` [PATCH 012/115] xfs: capture inode generation numbers in the ondisk exchmaps log item Darrick J. Wong
2024-07-30 0:27 ` [PATCH 013/115] xfs: enable logged file mapping exchange feature Darrick J. Wong
2024-07-30 0:27 ` [PATCH 014/115] xfs: add an explicit owner field to xfs_da_args Darrick J. Wong
2024-07-30 0:27 ` [PATCH 015/115] xfs: use the xfs_da_args owner field to set new dir/attr block owner Darrick J. Wong
2024-07-30 0:27 ` [PATCH 016/115] xfs: validate attr leaf buffer owners Darrick J. Wong
2024-07-30 0:28 ` [PATCH 017/115] xfs: validate attr remote value " Darrick J. Wong
2024-07-30 0:28 ` [PATCH 018/115] xfs: validate dabtree node " Darrick J. Wong
2024-07-30 0:28 ` [PATCH 019/115] xfs: validate directory leaf " Darrick J. Wong
2024-07-30 0:28 ` [PATCH 020/115] xfs: validate explicit directory data " Darrick J. Wong
2024-07-30 0:29 ` [PATCH 021/115] xfs: validate explicit directory block " Darrick J. Wong
2024-07-30 0:29 ` [PATCH 022/115] xfs: validate explicit directory free block owners Darrick J. Wong
2024-07-30 0:29 ` [PATCH 023/115] xfs: use atomic extent swapping to fix user file fork data Darrick J. Wong
2024-07-30 0:30 ` [PATCH 024/115] xfs: repair extended attributes Darrick J. Wong
2024-07-30 0:30 ` [PATCH 025/115] xfs: expose xfs_bmap_local_to_extents for online repair Darrick J. Wong
2024-07-30 0:30 ` [PATCH 026/115] xfs: pass the owner to xfs_symlink_write_target Darrick J. Wong
2024-07-30 0:30 ` [PATCH 027/115] xfs: check unused nlink fields in the ondisk inode Darrick J. Wong
2024-07-30 0:31 ` [PATCH 028/115] xfs: try to avoid allocating from sick inode clusters Darrick J. Wong
2024-07-30 0:31 ` [PATCH 029/115] xfs: pin inodes that would otherwise overflow link count Darrick J. Wong
2024-07-30 0:31 ` [PATCH 030/115] xfs: Increase XFS_DEFER_OPS_NR_INODES to 5 Darrick J. Wong
2024-07-30 0:31 ` [PATCH 031/115] xfs: make XFS_TRANS_LOWMODE match the other XFS_TRANS_ definitions Darrick J. Wong
2024-07-30 0:32 ` [PATCH 032/115] xfs: refactor realtime inode locking Darrick J. Wong
2024-07-30 0:32 ` [PATCH 033/115] xfs: free RT extents after updating the bmap btree Darrick J. Wong
2024-07-30 0:32 ` [PATCH 034/115] xfs: move RT inode locking out of __xfs_bunmapi Darrick J. Wong
2024-07-30 0:32 ` [PATCH 035/115] xfs: split xfs_mod_freecounter Darrick J. Wong
2024-07-30 0:33 ` [PATCH 036/115] xfs: reinstate RT support in xfs_bmapi_reserve_delalloc Darrick J. Wong
2024-07-30 0:33 ` [PATCH 037/115] xfs: cleanup fdblock/frextent accounting in xfs_bmap_del_extent_delay Darrick J. Wong
2024-07-30 0:33 ` [PATCH 038/115] xfs: support RT inodes in xfs_mod_delalloc Darrick J. Wong
2024-07-30 0:33 ` [PATCH 039/115] xfs: rework splitting of indirect block reservations Darrick J. Wong
2024-07-30 0:34 ` [PATCH 040/115] xfs: stop the steal (of data blocks for RT indirect blocks) Darrick J. Wong
2024-07-30 0:34 ` [PATCH 041/115] xfs: remove XFS_DA_OP_REMOVE Darrick J. Wong
2024-07-30 0:34 ` [PATCH 042/115] xfs: remove XFS_DA_OP_NOTIME Darrick J. Wong
2024-07-30 0:34 ` [PATCH 043/115] xfs: remove xfs_da_args.attr_flags Darrick J. Wong
2024-07-30 0:35 ` [PATCH 044/115] xfs: make attr removal an explicit operation Darrick J. Wong
2024-07-30 0:35 ` [PATCH 045/115] xfs: rearrange xfs_da_args a bit to use less space Darrick J. Wong
2024-07-30 0:35 ` [PATCH 046/115] xfs: attr fork iext must be loaded before calling xfs_attr_is_leaf Darrick J. Wong
2024-07-30 0:36 ` [PATCH 047/115] xfs: fix missing check for invalid attr flags Darrick J. Wong
2024-07-30 0:36 ` [PATCH 048/115] xfs: restructure xfs_attr_complete_op a bit Darrick J. Wong
2024-07-30 0:36 ` [PATCH 049/115] xfs: use helpers to extract xattr op from opflags Darrick J. Wong
2024-07-30 0:36 ` [PATCH 050/115] xfs: enforce one namespace per attribute Darrick J. Wong
2024-07-30 0:37 ` [PATCH 051/115] xfs: rearrange xfs_attr_match parameters Darrick J. Wong
2024-07-30 0:37 ` [PATCH 052/115] xfs: check the flags earlier in xfs_attr_match Darrick J. Wong
2024-07-30 0:37 ` [PATCH 053/115] xfs: move xfs_attr_defer_add to xfs_attr_item.c Darrick J. Wong
2024-07-30 0:37 ` [PATCH 054/115] xfs: create a separate hashname function for extended attributes Darrick J. Wong
2024-07-30 0:38 ` [PATCH 055/115] xfs: add parent pointer support to attribute code Darrick J. Wong
2024-07-30 0:38 ` [PATCH 056/115] xfs: define parent pointer ondisk extended attribute format Darrick J. Wong
2024-07-30 0:38 ` [PATCH 057/115] xfs: allow xattr matching on name and value for parent pointers Darrick J. Wong
2024-07-30 0:38 ` [PATCH 058/115] xfs: create attr log item opcodes and formats " Darrick J. Wong
2024-07-30 0:39 ` [PATCH 059/115] xfs: record inode generation in xattr update log intent items Darrick J. Wong
2024-07-30 0:39 ` [PATCH 060/115] xfs: add parent pointer validator functions Darrick J. Wong
2024-07-30 0:39 ` [PATCH 061/115] xfs: extend transaction reservations for parent attributes Darrick J. Wong
2024-07-30 0:39 ` [PATCH 062/115] xfs: create a hashname function for parent pointers Darrick J. Wong
2024-07-30 0:40 ` [PATCH 063/115] xfs: parent pointer attribute creation Darrick J. Wong
2024-07-30 0:40 ` [PATCH 064/115] xfs: add parent attributes to link Darrick J. Wong
2024-07-30 0:40 ` [PATCH 065/115] xfs: add parent attributes to symlink Darrick J. Wong
2024-07-30 0:40 ` [PATCH 066/115] xfs: remove parent pointers in unlink Darrick J. Wong
2024-07-30 0:41 ` [PATCH 067/115] xfs: Add parent pointers to rename Darrick J. Wong
2024-07-30 0:41 ` [PATCH 068/115] xfs: don't return XFS_ATTR_PARENT attributes via listxattr Darrick J. Wong
2024-07-30 0:41 ` [PATCH 069/115] xfs: pass the attr value to put_listent when possible Darrick J. Wong
2024-07-30 0:42 ` [PATCH 070/115] xfs: split out handle management helpers a bit Darrick J. Wong
2024-07-30 0:42 ` [PATCH 071/115] xfs: add parent pointer ioctls Darrick J. Wong
2024-07-30 0:42 ` [PATCH 072/115] xfs: don't remove the attr fork when parent pointers are enabled Darrick J. Wong
2024-07-30 0:42 ` [PATCH 073/115] xfs: add a incompat feature bit for parent pointers Darrick J. Wong
2024-07-30 0:43 ` [PATCH 074/115] xfs: fix unit conversion error in xfs_log_calc_max_attrsetm_res Darrick J. Wong
2024-07-30 0:43 ` [PATCH 075/115] xfs: drop compatibility minimum log size computations for reflink Darrick J. Wong
2024-07-30 0:43 ` [PATCH 076/115] xfs: enable parent pointers Darrick J. Wong
2024-07-30 0:43 ` [PATCH 077/115] xfs: check dirents have " Darrick J. Wong
2024-07-30 0:44 ` [PATCH 078/115] xfs: remove some boilerplate from xfs_attr_set Darrick J. Wong
2024-07-30 0:44 ` [PATCH 079/115] xfs: make the reserved block permission flag explicit in xfs_attr_set Darrick J. Wong
2024-07-30 0:44 ` [PATCH 080/115] xfs: add raw parent pointer apis to support repair Darrick J. Wong
2024-07-30 0:44 ` [PATCH 081/115] xfs: remove pointless unlocked assertion Darrick J. Wong
2024-07-30 0:45 ` [PATCH 082/115] xfs: split xfs_bmap_add_attrfork into two pieces Darrick J. Wong
2024-07-30 0:45 ` [PATCH 083/115] xfs: actually rebuild the parent pointer xattrs Darrick J. Wong
2024-07-30 0:45 ` [PATCH 084/115] xfs: teach online scrub to find directory tree structure problems Darrick J. Wong
2024-07-30 0:45 ` [PATCH 085/115] xfs: report directory tree corruption in the health information Darrick J. Wong
2024-07-30 0:46 ` [PATCH 086/115] xfs: introduce vectored scrub mode Darrick J. Wong
2024-07-30 0:46 ` [PATCH 087/115] xfs: factor out a xfs_dir_lookup_args helper Darrick J. Wong
2024-07-30 0:46 ` [PATCH 088/115] xfs: factor out a xfs_dir_createname_args helper Darrick J. Wong
2024-07-30 0:46 ` [PATCH 089/115] xfs: factor out a xfs_dir_removename_args helper Darrick J. Wong
2024-07-30 0:47 ` [PATCH 090/115] xfs: factor out a xfs_dir_replace_args helper Darrick J. Wong
2024-07-30 0:47 ` [PATCH 091/115] xfs: refactor dir format helpers Darrick J. Wong
2024-07-30 0:47 ` [PATCH 092/115] xfs: make the seq argument to xfs_bmapi_convert_delalloc() optional Darrick J. Wong
2024-07-30 0:48 ` [PATCH 093/115] xfs: make xfs_bmapi_convert_delalloc() to allocate the target offset Darrick J. Wong
2024-07-30 0:48 ` [PATCH 094/115] xfs: fix error returns from xfs_bmapi_write Darrick J. Wong
2024-07-30 0:48 ` [PATCH 095/115] xfs: remove the unusued tmp_logflags variable in xfs_bmapi_allocate Darrick J. Wong
2024-07-30 0:48 ` [PATCH 096/115] xfs: lift a xfs_valid_startblock into xfs_bmapi_allocate Darrick J. Wong
2024-07-30 0:49 ` [PATCH 097/115] xfs: don't open code XFS_FILBLKS_MIN in xfs_bmapi_write Darrick J. Wong
2024-07-30 0:49 ` [PATCH 098/115] xfs: pass the actual offset and len to allocate to xfs_bmapi_allocate Darrick J. Wong
2024-07-30 0:49 ` [PATCH 099/115] xfs: remove the xfs_iext_peek_prev_extent call in xfs_bmapi_allocate Darrick J. Wong
2024-07-30 0:49 ` [PATCH 100/115] xfs: fix xfs_bmap_add_extent_delay_real for partial conversions Darrick J. Wong
2024-07-30 0:50 ` [PATCH 101/115] xfs: do not allocate the entire delalloc extent in xfs_bmapi_write Darrick J. Wong
2024-07-30 0:50 ` [PATCH 102/115] xfs: use unsigned ints for non-negative quantities in xfs_attr_remote.c Darrick J. Wong
2024-07-30 0:50 ` [PATCH 103/115] xfs: turn XFS_ATTR3_RMT_BUF_SPACE into a function Darrick J. Wong
2024-07-30 0:50 ` [PATCH 104/115] xfs: create a helper to compute the blockcount of a max sized remote value Darrick J. Wong
2024-07-30 0:51 ` [PATCH 105/115] xfs: minor cleanups of xfs_attr3_rmt_blocks Darrick J. Wong
2024-07-30 0:51 ` [PATCH 106/115] xfs: xfs_quota_unreserve_blkres can't fail Darrick J. Wong
2024-07-30 0:51 ` [PATCH 107/115] xfs: simplify iext overflow checking and upgrade Darrick J. Wong
2024-07-30 0:51 ` [PATCH 108/115] xfs: Stop using __maybe_unused in xfs_alloc.c Darrick J. Wong
2024-07-30 0:52 ` [PATCH 109/115] xfs: fix xfs_init_attr_trans not handling explicit operation codes Darrick J. Wong
2024-07-30 0:52 ` [PATCH 110/115] xfs: allow symlinks with short remote targets Darrick J. Wong
2024-07-30 0:52 ` [PATCH 111/115] xfs: Add cond_resched to block unmap range and reflink remap path Darrick J. Wong
2024-07-30 0:52 ` [PATCH 112/115] xfs: make sure sb_fdblocks is non-negative Darrick J. Wong
2024-07-30 0:53 ` [PATCH 113/115] xfs: restrict when we try to align cow fork delalloc to cowextsz hints Darrick J. Wong
2024-07-30 0:53 ` [PATCH 114/115] xfs: allow unlinked symlinks and dirs with zero size Darrick J. Wong
2024-07-30 0:53 ` [PATCH 115/115] xfs: fix direction in XFS_IOC_EXCHANGE_RANGE Darrick J. Wong
2024-07-30 0:17 ` [PATCHSET v30.9 03/23] xfsprogs: atomic file updates Darrick J. Wong
2024-07-30 0:54 ` [PATCH 01/12] man: document the exchange-range ioctl Darrick J. Wong
2024-07-30 0:54 ` [PATCH 02/12] man: document XFS_FSOP_GEOM_FLAGS_EXCHRANGE Darrick J. Wong
2024-07-30 0:54 ` [PATCH 03/12] libhandle: add support for bulkstat v5 Darrick J. Wong
2024-07-30 0:54 ` [PATCH 04/12] libfrog: add support for exchange range ioctl family Darrick J. Wong
2024-07-30 0:55 ` [PATCH 05/12] xfs_db: advertise exchange-range in the version command Darrick J. Wong
2024-07-30 0:55 ` [PATCH 06/12] xfs_logprint: support dumping exchmaps log items Darrick J. Wong
2024-07-30 0:55 ` [PATCH 07/12] xfs_fsr: convert to bulkstat v5 ioctls Darrick J. Wong
2024-07-30 0:55 ` [PATCH 08/12] xfs_fsr: skip the xattr/forkoff levering with the newer swapext implementations Darrick J. Wong
2024-07-30 0:56 ` [PATCH 09/12] xfs_io: create exchangerange command to test file range exchange ioctl Darrick J. Wong
2024-07-30 0:56 ` [PATCH 10/12] libfrog: advertise exchange-range support Darrick J. Wong
2024-07-30 0:56 ` [PATCH 11/12] xfs_repair: add exchange-range to file systems Darrick J. Wong
2024-07-30 0:56 ` [PATCH 12/12] mkfs: add a formatting option for exchange-range Darrick J. Wong
2024-07-30 0:17 ` [PATCHSET v30.9 04/23] xfsprogs: set and validate dir/attr block owners Darrick J. Wong
2024-07-30 0:57 ` [PATCH 1/1] xfs_{db,repair}: add an explicit owner field to xfs_da_args Darrick J. Wong
2024-07-30 0:17 ` [PATCHSET v30.9 05/23] xfsprogs: inode-related repair fixes Darrick J. Wong
2024-07-30 0:57 ` [PATCH 1/2] libxfs: port the bumplink function from the kernel Darrick J. Wong
2024-07-30 0:57 ` [PATCH 2/2] mkfs/repair: pin inodes that would otherwise overflow link count Darrick J. Wong
2024-07-30 0:18 ` [PATCHSET v30.9 06/23] xfs_scrub: fixes to the repair code Darrick J. Wong
2024-07-30 0:57 ` [PATCH 1/5] xfs_scrub: remove ALP_* flags namespace Darrick J. Wong
2024-07-30 0:58 ` [PATCH 2/5] xfs_scrub: move repair functions to repair.c Darrick J. Wong
2024-07-30 0:58 ` [PATCH 3/5] xfs_scrub: log when a repair was unnecessary Darrick J. Wong
2024-07-30 0:58 ` [PATCH 4/5] xfs_scrub: require primary superblock repairs to complete before proceeding Darrick J. Wong
2024-07-30 0:58 ` [PATCH 5/5] xfs_scrub: actually try to fix summary counters ahead of repairs Darrick J. Wong
2024-07-30 0:18 ` [PATCHSET v30.9 07/23] xfs_scrub: improve warnings about difficult repairs Darrick J. Wong
2024-07-30 0:59 ` [PATCH 1/8] xfs_scrub: fix missing scrub coverage for broken inodes Darrick J. Wong
2024-07-30 0:59 ` [PATCH 2/8] xfs_scrub: collapse trivial superblock scrub helpers Darrick J. Wong
2024-07-30 0:59 ` [PATCH 3/8] xfs_scrub: get rid of trivial fs metadata scanner helpers Darrick J. Wong
2024-07-30 1:00 ` [PATCH 4/8] xfs_scrub: split up the mustfix repairs and difficulty assessment functions Darrick J. Wong
2024-07-30 1:00 ` [PATCH 5/8] xfs_scrub: add missing repair types to the mustfix and difficulty assessment Darrick J. Wong
2024-07-30 1:00 ` [PATCH 6/8] xfs_scrub: any inconsistency in metadata should trigger difficulty warnings Darrick J. Wong
2024-07-30 1:00 ` [PATCH 7/8] xfs_scrub: warn about difficult repairs to rt and quota metadata Darrick J. Wong
2024-07-30 1:01 ` [PATCH 8/8] xfs_scrub: enable users to bump information messages to warnings Darrick J. Wong
2024-07-30 0:18 ` [PATCHSET v30.9 08/23] xfs_scrub: track data dependencies for repairs Darrick J. Wong
2024-07-30 1:01 ` [PATCH 1/9] xfs_scrub: track repair items by principal, not by individual repairs Darrick J. Wong
2024-07-30 1:01 ` [PATCH 2/9] xfs_scrub: use repair_item to direct repair activities Darrick J. Wong
2024-07-30 1:01 ` [PATCH 3/9] xfs_scrub: remove action lists from phaseX code Darrick J. Wong
2024-07-30 1:02 ` [PATCH 4/9] xfs_scrub: remove scrub_metadata_file Darrick J. Wong
2024-07-30 1:02 ` [PATCH 5/9] xfs_scrub: boost the repair priority of dependencies of damaged items Darrick J. Wong
2024-07-30 1:02 ` [PATCH 6/9] xfs_scrub: clean up repair_item_difficulty a little Darrick J. Wong
2024-07-30 1:02 ` [PATCH 7/9] xfs_scrub: check dependencies of a scrub type before repairing Darrick J. Wong
2024-07-30 1:03 ` [PATCH 8/9] xfs_scrub: retry incomplete repairs Darrick J. Wong
2024-07-30 1:03 ` [PATCH 9/9] xfs_scrub: remove unused action_list fields Darrick J. Wong
2024-07-30 0:18 ` [PATCHSET v30.9 09/23] xfs_scrub: use scrub_item to track check progress Darrick J. Wong
2024-07-30 1:03 ` [PATCH 1/5] xfs_scrub: start tracking scrub state in scrub_item Darrick J. Wong
2024-07-30 1:03 ` [PATCH 2/5] xfs_scrub: remove enum check_outcome Darrick J. Wong
2024-07-30 1:04 ` [PATCH 3/5] xfs_scrub: refactor scrub_meta_type out of existence Darrick J. Wong
2024-07-30 1:04 ` [PATCH 4/5] xfs_scrub: hoist repair retry loop to repair_item_class Darrick J. Wong
2024-07-30 1:04 ` [PATCH 5/5] xfs_scrub: hoist scrub retry loop to scrub_item_check_file Darrick J. Wong
2024-07-30 0:19 ` [PATCHSET v30.9 10/23] xfs_scrub: improve scheduling of repair items Darrick J. Wong
2024-07-30 1:05 ` [PATCH 1/4] libfrog: enhance ptvar to support initializer functions Darrick J. Wong
2024-07-30 1:05 ` [PATCH 2/4] xfs_scrub: improve thread scheduling repair items during phase 4 Darrick J. Wong
2024-07-30 1:05 ` [PATCH 3/4] xfs_scrub: recheck entire metadata objects after corruption repairs Darrick J. Wong
2024-07-30 1:05 ` [PATCH 4/4] xfs_scrub: try to repair space metadata before file metadata Darrick J. Wong
2024-07-30 0:19 ` [PATCHSET v30.9 11/23] xfs_scrub: detect deceptive filename extensions Darrick J. Wong
2024-07-30 1:06 ` [PATCH 01/13] xfs_scrub: use proper UChar string iterators Darrick J. Wong
2024-07-30 1:06 ` [PATCH 02/13] xfs_scrub: hoist code that removes ignorable characters Darrick J. Wong
2024-07-30 1:06 ` [PATCH 03/13] xfs_scrub: add a couple of omitted invisible code points Darrick J. Wong
2024-07-30 1:06 ` [PATCH 04/13] xfs_scrub: avoid potential UAF after freeing a duplicate name entry Darrick J. Wong
2024-07-30 1:07 ` [PATCH 05/13] xfs_scrub: guard against libicu returning negative buffer lengths Darrick J. Wong
2024-07-30 1:07 ` [PATCH 06/13] xfs_scrub: hoist non-rendering character predicate Darrick J. Wong
2024-07-30 1:07 ` [PATCH 07/13] xfs_scrub: store bad flags with the name entry Darrick J. Wong
2024-07-30 1:07 ` [PATCH 08/13] xfs_scrub: rename UNICRASH_ZERO_WIDTH to UNICRASH_INVISIBLE Darrick J. Wong
2024-07-30 1:08 ` [PATCH 09/13] xfs_scrub: type-coerce the UNICRASH_* flags Darrick J. Wong
2024-07-30 1:08 ` [PATCH 10/13] xfs_scrub: reduce size of struct name_entry Darrick J. Wong
2024-07-30 1:08 ` [PATCH 11/13] xfs_scrub: rename struct unicrash.normalizer Darrick J. Wong
2024-07-30 1:08 ` [PATCH 12/13] xfs_scrub: report deceptive file extensions Darrick J. Wong
2024-07-30 1:09 ` [PATCH 13/13] xfs_scrub: dump unicode points Darrick J. Wong
2024-07-30 0:19 ` [PATCHSET v30.9 12/23] xfs_scrub: move fstrim to a separate phase Darrick J. Wong
2024-07-30 1:09 ` [PATCH 1/7] xfs_scrub: move FITRIM to phase 8 Darrick J. Wong
2024-07-30 1:09 ` [PATCH 2/7] xfs_scrub: ignore phase 8 if the user disabled fstrim Darrick J. Wong
2024-07-30 1:09 ` [PATCH 3/7] xfs_scrub: collapse trim_filesystem Darrick J. Wong
2024-07-30 1:10 ` [PATCH 4/7] xfs_scrub: fix the work estimation for phase 8 Darrick J. Wong
2024-07-30 1:10 ` [PATCH 5/7] xfs_scrub: report FITRIM errors properly Darrick J. Wong
2024-07-30 1:10 ` [PATCH 6/7] xfs_scrub: don't call FITRIM after runtime errors Darrick J. Wong
2024-07-30 1:11 ` [PATCH 7/7] xfs_scrub: improve responsiveness while trimming the filesystem Darrick J. Wong
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:11 ` [PATCH 1/7] libfrog: hoist free space histogram code Darrick J. Wong
2024-07-30 1:11 ` [PATCH 2/7] libfrog: print wider columns for free space histogram Darrick J. Wong
2024-07-30 1:11 ` [PATCH 3/7] libfrog: print cdf of free space buckets Darrick J. Wong
2024-07-30 1:12 ` [PATCH 4/7] xfs_scrub: don't close stdout when closing the progress bar Darrick J. Wong
2024-07-30 1:12 ` [PATCH 5/7] xfs_scrub: remove pointless spacemap.c arguments 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-30 1:12 ` Darrick J. Wong [this message]
2024-07-30 0:20 ` [PATCHSET v30.9 14/23] xfs_scrub: tighten security of systemd services Darrick J. Wong
2024-07-30 1:13 ` [PATCH 1/6] xfs_scrub: allow auxiliary pathnames for sandboxing Darrick J. Wong
2024-07-30 1:13 ` [PATCH 2/6] xfs_scrub.service: reduce background CPU usage to less than one core if possible Darrick J. Wong
2024-07-30 1:13 ` [PATCH 3/6] xfs_scrub: use dynamic users when running as a systemd service Darrick J. Wong
2024-07-30 1:13 ` [PATCH 4/6] xfs_scrub: tighten up the security on the background " Darrick J. Wong
2024-07-30 1:14 ` [PATCH 5/6] xfs_scrub_fail: " Darrick J. Wong
2024-07-30 1:14 ` [PATCH 6/6] xfs_scrub_all: " Darrick J. Wong
2024-07-30 0:20 ` [PATCHSET v30.9 15/23] xfs_scrub_all: automatic media scan service Darrick J. Wong
2024-07-30 1:14 ` [PATCH 1/6] xfs_scrub_all: only use the xfs_scrub@ systemd services in service mode Darrick J. Wong
2024-07-30 1:14 ` [PATCH 2/6] xfs_scrub_all: remove journalctl background process Darrick J. Wong
2024-07-30 1:15 ` [PATCH 3/6] xfs_scrub_all: support metadata+media scans of all filesystems Darrick J. Wong
2024-07-30 1:15 ` [PATCH 4/6] xfs_scrub_all: enable periodic file data scrubs automatically Darrick J. Wong
2024-07-30 1:15 ` [PATCH 5/6] xfs_scrub_all: trigger automatic media scans once per month Darrick J. Wong
2024-07-30 1:15 ` [PATCH 6/6] xfs_scrub_all: failure reporting for the xfs_scrub_all job Darrick J. Wong
2024-07-30 0:20 ` [PATCHSET v30.9 16/23] xfs_scrub_all: improve systemd handling Darrick J. Wong
2024-07-30 1:16 ` [PATCH 1/5] xfs_scrub_all: encapsulate all the subprocess code in an object Darrick J. Wong
2024-07-30 1:16 ` [PATCH 2/5] xfs_scrub_all: encapsulate all the systemctl " Darrick J. Wong
2024-07-30 1:16 ` [PATCH 3/5] xfs_scrub_all: add CLI option for easier debugging Darrick J. Wong
2024-07-30 1:17 ` [PATCH 4/5] xfs_scrub_all: convert systemctl calls to dbus Darrick J. Wong
2024-07-30 1:17 ` [PATCH 5/5] xfs_scrub_all: implement retry and backoff for dbus calls Darrick J. Wong
2024-07-30 0:20 ` [PATCHSET v13.8 17/23] xfsprogs: improve extended attribute validation Darrick J. Wong
2024-07-30 1:17 ` [PATCH 1/6] xfs_scrub_all: fail fast on masked units Darrick J. Wong
2024-07-30 1:17 ` [PATCH 2/6] xfs_scrub: automatic downgrades to dry-run mode in service mode Darrick J. Wong
2024-07-30 1:18 ` [PATCH 3/6] xfs_scrub: add an optimization-only mode Darrick J. Wong
2024-07-30 1:18 ` [PATCH 4/6] xfs_repair: check free space requirements before allowing upgrades Darrick J. Wong
2024-07-30 1:18 ` [PATCH 5/6] xfs_repair: enforce one namespace bit per extended attribute Darrick J. Wong
2024-07-30 1:18 ` [PATCH 6/6] xfs_repair: check for unknown flags in attr entries Darrick J. Wong
2024-07-30 0:21 ` [PATCHSET v13.8 18/23] xfsprogs: Parent Pointers Darrick J. Wong
2024-07-30 1:19 ` [PATCH 01/24] libxfs: create attr log item opcodes and formats for parent pointers Darrick J. Wong
2024-07-30 1:19 ` [PATCH 02/24] xfs_{db,repair}: implement new attr hash value function Darrick J. Wong
2024-07-30 1:19 ` [PATCH 03/24] xfs_logprint: dump new attr log item fields Darrick J. Wong
2024-07-30 1:19 ` [PATCH 04/24] man: document the XFS_IOC_GETPARENTS ioctl Darrick J. Wong
2024-07-30 1:20 ` [PATCH 05/24] libfrog: report parent pointers to userspace Darrick J. Wong
2024-07-30 1:20 ` [PATCH 06/24] libfrog: add parent pointer support code Darrick J. Wong
2024-07-30 1:20 ` [PATCH 07/24] xfs_io: adapt parent command to new parent pointer ioctls Darrick J. Wong
2024-07-30 1:20 ` [PATCH 08/24] xfs_io: Add i, n and f flags to parent command Darrick J. Wong
2024-07-30 1:21 ` [PATCH 09/24] xfs_logprint: decode parent pointers in ATTRI items fully Darrick J. Wong
2024-07-30 1:21 ` [PATCH 10/24] xfs_spaceman: report file paths Darrick J. Wong
2024-07-30 1:21 ` [PATCH 11/24] xfs_scrub: use parent pointers when possible to report file operations Darrick J. Wong
2024-07-30 1:21 ` [PATCH 12/24] xfs_scrub: use parent pointers to report lost file data Darrick J. Wong
2024-07-30 1:22 ` [PATCH 13/24] xfs_db: report parent pointers in version command Darrick J. Wong
2024-07-30 1:22 ` [PATCH 14/24] xfs_db: report parent bit on xattrs Darrick J. Wong
2024-07-30 1:22 ` [PATCH 15/24] xfs_db: report parent pointers embedded in xattrs Darrick J. Wong
2024-07-30 1:23 ` [PATCH 16/24] xfs_db: obfuscate dirent and parent pointer names consistently Darrick J. Wong
2024-07-30 1:23 ` [PATCH 17/24] libxfs: export attr3_leaf_hdr_from_disk via libxfs_api_defs.h Darrick J. Wong
2024-07-30 1:23 ` [PATCH 18/24] xfs_db: add a parents command to list the parents of a file Darrick J. Wong
2024-07-30 1:23 ` [PATCH 19/24] xfs_db: make attr_set and attr_remove handle parent pointers Darrick J. Wong
2024-07-30 1:24 ` [PATCH 20/24] xfs_db: add link and unlink expert commands Darrick J. Wong
2024-07-30 1:24 ` [PATCH 21/24] xfs_db: compute hashes of parent pointers Darrick J. Wong
2024-07-30 1:24 ` [PATCH 22/24] libxfs: create new files with attr forks if necessary Darrick J. Wong
2024-07-30 1:24 ` [PATCH 23/24] mkfs: Add parent pointers during protofile creation Darrick J. Wong
2024-07-30 1:25 ` [PATCH 24/24] mkfs: enable formatting with parent pointers Darrick J. Wong
2024-07-30 0:21 ` [PATCHSET v13.8 19/23] xfsprogs: scrubbing for " Darrick J. Wong
2024-07-30 1:25 ` [PATCH 1/2] xfs: create a blob array data structure Darrick J. Wong
2024-07-30 1:25 ` [PATCH 2/2] man2: update ioctl_xfs_scrub_metadata.2 for parent pointers Darrick J. Wong
2024-07-30 0:21 ` [PATCHSET v13.8 20/23] xfsprogs: offline repair " Darrick J. Wong
2024-07-30 1:25 ` [PATCH 01/12] xfs_db: remove some boilerplate from xfs_attr_set Darrick J. Wong
2024-07-30 1:26 ` [PATCH 02/12] xfs_db: actually report errors from libxfs_attr_set Darrick J. Wong
2024-07-30 1:26 ` [PATCH 03/12] xfs_repair: junk parent pointer attributes when filesystem doesn't support them Darrick J. Wong
2024-07-30 1:26 ` [PATCH 04/12] xfs_repair: add parent pointers when messing with /lost+found Darrick J. Wong
2024-07-30 1:26 ` [PATCH 05/12] xfs_repair: junk duplicate hashtab entries when processing sf dirents Darrick J. Wong
2024-07-30 1:27 ` [PATCH 06/12] xfs_repair: build a parent pointer index Darrick J. Wong
2024-07-30 1:27 ` [PATCH 07/12] xfs_repair: move the global dirent name store to a separate object Darrick J. Wong
2024-07-30 1:27 ` [PATCH 08/12] xfs_repair: deduplicate strings stored in string blob Darrick J. Wong
2024-07-30 1:27 ` [PATCH 09/12] xfs_repair: check parent pointers Darrick J. Wong
2024-07-30 1:28 ` [PATCH 10/12] xfs_repair: dump garbage parent pointer attributes Darrick J. Wong
2024-07-30 1:28 ` [PATCH 11/12] xfs_repair: update ondisk parent pointer records Darrick J. Wong
2024-07-30 1:28 ` [PATCH 12/12] xfs_repair: wipe ondisk parent pointers when there are none Darrick J. Wong
2024-07-30 0:21 ` [PATCHSET v13.8 21/23] xfsprogs: detect and correct directory tree problems Darrick J. Wong
2024-07-30 1:29 ` [PATCH 1/5] libfrog: add directory tree structure scrubber to scrub library Darrick J. Wong
2024-07-30 1:29 ` [PATCH 2/5] xfs_spaceman: report directory tree corruption in the health information Darrick J. Wong
2024-07-30 1:29 ` [PATCH 3/5] xfs_scrub: fix erroring out of check_inode_names Darrick J. Wong
2024-07-30 1:29 ` [PATCH 4/5] xfs_scrub: detect and repair directory tree corruptions Darrick J. Wong
2024-07-30 1:30 ` [PATCH 5/5] xfs_scrub: defer phase5 file scans if dirloop fails Darrick J. Wong
2024-07-30 0:22 ` [PATCHSET v30.9 22/23] xfs_scrub: vectorize kernel calls Darrick J. Wong
2024-07-30 1:30 ` [PATCH 01/10] man: document vectored scrub mode Darrick J. Wong
2024-07-30 1:30 ` [PATCH 02/10] libfrog: support vectored scrub Darrick J. Wong
2024-07-30 1:30 ` [PATCH 03/10] xfs_io: " Darrick J. Wong
2024-07-30 1:31 ` [PATCH 04/10] xfs_scrub: split the scrub epilogue code into a separate function Darrick J. Wong
2024-07-30 1:31 ` [PATCH 05/10] xfs_scrub: split the repair " Darrick J. Wong
2024-07-30 1:31 ` [PATCH 06/10] xfs_scrub: convert scrub and repair epilogues to use xfs_scrub_vec Darrick J. Wong
2024-07-30 1:31 ` [PATCH 07/10] xfs_scrub: vectorize scrub calls Darrick J. Wong
2024-07-30 1:32 ` [PATCH 08/10] xfs_scrub: vectorize repair calls Darrick J. Wong
2024-07-30 1:32 ` [PATCH 09/10] xfs_scrub: use scrub barriers to reduce kernel calls Darrick J. Wong
2024-07-30 1:32 ` [PATCH 10/10] xfs_scrub: try spot repairs of metadata items to make scrub progress Darrick J. Wong
2024-07-30 0:22 ` [PATCHSET v30.9 23/23] xfs_repair: fixes for kernel 6.10 Darrick J. Wong
2024-07-30 1:32 ` [PATCH 1/1] xfs_repair: allow symlinks with short remote targets Darrick J. Wong
-- strict thread matches above, loose matches on Subject: below --
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 7/7] xfs_scrub: tune fstrim minlen parameter based on free space histograms 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: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
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 7/7] xfs_scrub: tune fstrim minlen parameter based on free space histograms 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 7/7] xfs_scrub: tune fstrim minlen parameter based on free space histograms 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=172229848553.1349623.5586535069096068794.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).