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 09/10] xfs_scrub: use scrub barriers to reduce kernel calls
Date: Mon, 29 Jul 2024 18:32:24 -0700 [thread overview]
Message-ID: <172229852474.1353240.7183452625768502480.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <172229852355.1353240.6151017907178495656.stgit@frogsfrogsfrogs>
From: Darrick J. Wong <djwong@kernel.org>
Use scrub barriers so that we can submit a single scrub request for a
bunch of things, and have the kernel stop midway through if it finds
anything broken.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
scrub/phase2.c | 15 ++--------
scrub/phase3.c | 17 +----------
scrub/repair.c | 32 +++++++++++++++++++-
scrub/scrub.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++-
scrub/scrub.h | 17 +++++++++++
scrub/scrub_private.h | 4 ++-
6 files changed, 130 insertions(+), 32 deletions(-)
diff --git a/scrub/phase2.c b/scrub/phase2.c
index 57c6d0ef2..d435da071 100644
--- a/scrub/phase2.c
+++ b/scrub/phase2.c
@@ -91,21 +91,12 @@ scan_ag_metadata(
snprintf(descr, DESCR_BUFSZ, _("AG %u"), agno);
/*
- * First we scrub and fix the AG headers, because we need
- * them to work well enough to check the AG btrees.
+ * First we scrub and fix the AG headers, because we need them to work
+ * well enough to check the AG btrees. Then scrub the AG btrees.
*/
scrub_item_schedule_group(&sri, XFROG_SCRUB_GROUP_AGHEADER);
- ret = scrub_item_check(ctx, &sri);
- if (ret)
- goto err;
-
- /* Repair header damage. */
- ret = repair_item_corruption(ctx, &sri);
- if (ret)
- goto err;
-
- /* Now scrub the AG btrees. */
scrub_item_schedule_group(&sri, XFROG_SCRUB_GROUP_PERAG);
+
ret = scrub_item_check(ctx, &sri);
if (ret)
goto err;
diff --git a/scrub/phase3.c b/scrub/phase3.c
index 98e5c5a1f..09a1ea452 100644
--- a/scrub/phase3.c
+++ b/scrub/phase3.c
@@ -145,25 +145,11 @@ scrub_inode(
/* Scrub the inode. */
scrub_item_schedule(&sri, XFS_SCRUB_TYPE_INODE);
- error = scrub_item_check_file(ctx, &sri, fd);
- if (error)
- goto out;
-
- error = try_inode_repair(ictx, &sri, fd);
- if (error)
- goto out;
/* Scrub all block mappings. */
scrub_item_schedule(&sri, XFS_SCRUB_TYPE_BMBTD);
scrub_item_schedule(&sri, XFS_SCRUB_TYPE_BMBTA);
scrub_item_schedule(&sri, XFS_SCRUB_TYPE_BMBTC);
- error = scrub_item_check_file(ctx, &sri, fd);
- if (error)
- goto out;
-
- error = try_inode_repair(ictx, &sri, fd);
- if (error)
- goto out;
/*
* Check file data contents, e.g. symlink and directory entries.
@@ -182,11 +168,12 @@ scrub_inode(
scrub_item_schedule(&sri, XFS_SCRUB_TYPE_XATTR);
scrub_item_schedule(&sri, XFS_SCRUB_TYPE_PARENT);
+
+ /* Try to check and repair the file while it's open. */
error = scrub_item_check_file(ctx, &sri, fd);
if (error)
goto out;
- /* Try to repair the file while it's open. */
error = try_inode_repair(ictx, &sri, fd);
if (error)
goto out;
diff --git a/scrub/repair.c b/scrub/repair.c
index 6a5fd40fd..8a28f6b13 100644
--- a/scrub/repair.c
+++ b/scrub/repair.c
@@ -324,6 +324,7 @@ repair_call_kernel(
struct scrubv_descr vdesc = SCRUBV_DESCR(&scrubv);
struct xfs_scrub_vec *v;
unsigned int scrub_type;
+ bool need_barrier = false;
int error;
assert(!debug_tweak_on("XFS_SCRUB_NO_KERNEL"));
@@ -339,6 +340,11 @@ repair_call_kernel(
repair_flags))
continue;
+ if (need_barrier) {
+ xfrog_scrubv_add_barrier(&scrubv);
+ need_barrier = false;
+ }
+
xfrog_scrubv_add_item(&scrubv, sri, scrub_type, true);
if (sri->sri_state[scrub_type] & SCRUB_ITEM_NEEDSREPAIR)
@@ -351,6 +357,17 @@ repair_call_kernel(
dbg_printf("repair %s flags %xh tries %u\n", descr_render(&dsc),
sri->sri_state[scrub_type],
sri->sri_tries[scrub_type]);
+
+ /*
+ * One of the other scrub types depends on this one. Set us up
+ * to add a repair barrier if we decide to schedule a repair
+ * after this one. If the UNFIXED flag is set, that means this
+ * is our last chance to fix things, so we skip the barriers
+ * just let everything run.
+ */
+ if (!(repair_flags & XRM_FINAL_WARNING) &&
+ (sri->sri_state[scrub_type] & SCRUB_ITEM_BARRIER))
+ need_barrier = true;
}
error = -xfrog_scrubv_metadata(xfdp, &scrubv);
@@ -358,6 +375,16 @@ repair_call_kernel(
return error;
foreach_xfrog_scrubv_vec(&scrubv, vdesc.idx, v) {
+ /* Deal with barriers separately. */
+ if (v->sv_type == XFS_SCRUB_TYPE_BARRIER) {
+ /* -ECANCELED means the kernel stopped here. */
+ if (v->sv_ret == -ECANCELED)
+ return 0;
+ if (v->sv_ret)
+ return -v->sv_ret;
+ continue;
+ }
+
error = repair_epilogue(ctx, &dsc, sri, repair_flags, v);
if (error)
return error;
@@ -446,7 +473,8 @@ repair_item_boost_priorities(
* bits are left untouched to force a rescan in phase 4.
*/
#define MUSTFIX_STATES (SCRUB_ITEM_CORRUPT | \
- SCRUB_ITEM_BOOST_REPAIR)
+ SCRUB_ITEM_BOOST_REPAIR | \
+ SCRUB_ITEM_BARRIER)
/*
* Figure out which AG metadata must be fixed before we can move on
* to the inode scan.
@@ -728,7 +756,7 @@ repair_item_class(
return 0;
if (ctx->mode == SCRUB_MODE_PREEN && !(repair_mask & SCRUB_ITEM_PREEN))
return 0;
- if (!scrub_item_schedule_work(sri, repair_mask))
+ if (!scrub_item_schedule_work(sri, repair_mask, repair_deps))
return 0;
/*
diff --git a/scrub/scrub.c b/scrub/scrub.c
index d582dafbb..44c404989 100644
--- a/scrub/scrub.c
+++ b/scrub/scrub.c
@@ -24,6 +24,35 @@
/* Online scrub and repair wrappers. */
+/*
+ * Bitmap showing the correctness dependencies between scrub types for scrubs.
+ * Dependencies cannot cross scrub groups.
+ */
+#define DEP(x) (1U << (x))
+static const unsigned int scrub_deps[XFS_SCRUB_TYPE_NR] = {
+ [XFS_SCRUB_TYPE_AGF] = DEP(XFS_SCRUB_TYPE_SB),
+ [XFS_SCRUB_TYPE_AGFL] = DEP(XFS_SCRUB_TYPE_SB) |
+ DEP(XFS_SCRUB_TYPE_AGF),
+ [XFS_SCRUB_TYPE_AGI] = DEP(XFS_SCRUB_TYPE_SB),
+ [XFS_SCRUB_TYPE_BNOBT] = DEP(XFS_SCRUB_TYPE_AGF),
+ [XFS_SCRUB_TYPE_CNTBT] = DEP(XFS_SCRUB_TYPE_AGF),
+ [XFS_SCRUB_TYPE_INOBT] = DEP(XFS_SCRUB_TYPE_AGI),
+ [XFS_SCRUB_TYPE_FINOBT] = DEP(XFS_SCRUB_TYPE_AGI),
+ [XFS_SCRUB_TYPE_RMAPBT] = DEP(XFS_SCRUB_TYPE_AGF),
+ [XFS_SCRUB_TYPE_REFCNTBT] = DEP(XFS_SCRUB_TYPE_AGF),
+ [XFS_SCRUB_TYPE_BMBTD] = DEP(XFS_SCRUB_TYPE_INODE),
+ [XFS_SCRUB_TYPE_BMBTA] = DEP(XFS_SCRUB_TYPE_INODE),
+ [XFS_SCRUB_TYPE_BMBTC] = DEP(XFS_SCRUB_TYPE_INODE),
+ [XFS_SCRUB_TYPE_DIR] = DEP(XFS_SCRUB_TYPE_BMBTD),
+ [XFS_SCRUB_TYPE_XATTR] = DEP(XFS_SCRUB_TYPE_BMBTA),
+ [XFS_SCRUB_TYPE_SYMLINK] = DEP(XFS_SCRUB_TYPE_BMBTD),
+ [XFS_SCRUB_TYPE_PARENT] = DEP(XFS_SCRUB_TYPE_BMBTD),
+ [XFS_SCRUB_TYPE_QUOTACHECK] = DEP(XFS_SCRUB_TYPE_UQUOTA) |
+ DEP(XFS_SCRUB_TYPE_GQUOTA) |
+ DEP(XFS_SCRUB_TYPE_PQUOTA),
+};
+#undef DEP
+
/* Describe the current state of a vectored scrub. */
int
format_scrubv_descr(
@@ -255,6 +284,20 @@ xfrog_scrubv_add_item(
v->sv_flags |= XFS_SCRUB_IFLAG_FORCE_REBUILD;
}
+/* Add a barrier to the scrub vector. */
+void
+xfrog_scrubv_add_barrier(
+ struct xfrog_scrubv *scrubv)
+{
+ struct xfs_scrub_vec *v;
+
+ v = xfrog_scrubv_next_vector(scrubv);
+
+ v->sv_type = XFS_SCRUB_TYPE_BARRIER;
+ v->sv_flags = XFS_SCRUB_OFLAG_CORRUPT | XFS_SCRUB_OFLAG_XFAIL |
+ XFS_SCRUB_OFLAG_XCORRUPT | XFS_SCRUB_OFLAG_INCOMPLETE;
+}
+
/* Do a read-only check of some metadata. */
static int
scrub_call_kernel(
@@ -267,6 +310,7 @@ scrub_call_kernel(
struct scrubv_descr vdesc = SCRUBV_DESCR(&scrubv);
struct xfs_scrub_vec *v;
unsigned int scrub_type;
+ bool need_barrier = false;
int error;
assert(!debug_tweak_on("XFS_SCRUB_NO_KERNEL"));
@@ -277,8 +321,17 @@ scrub_call_kernel(
foreach_scrub_type(scrub_type) {
if (!(sri->sri_state[scrub_type] & SCRUB_ITEM_NEEDSCHECK))
continue;
+
+ if (need_barrier) {
+ xfrog_scrubv_add_barrier(&scrubv);
+ need_barrier = false;
+ }
+
xfrog_scrubv_add_item(&scrubv, sri, scrub_type, false);
+ if (sri->sri_state[scrub_type] & SCRUB_ITEM_BARRIER)
+ need_barrier = true;
+
dbg_printf("check %s flags %xh tries %u\n", descr_render(&dsc),
sri->sri_state[scrub_type],
sri->sri_tries[scrub_type]);
@@ -289,6 +342,16 @@ scrub_call_kernel(
return error;
foreach_xfrog_scrubv_vec(&scrubv, vdesc.idx, v) {
+ /* Deal with barriers separately. */
+ if (v->sv_type == XFS_SCRUB_TYPE_BARRIER) {
+ /* -ECANCELED means the kernel stopped here. */
+ if (v->sv_ret == -ECANCELED)
+ return 0;
+ if (v->sv_ret)
+ return -v->sv_ret;
+ continue;
+ }
+
error = scrub_epilogue(ctx, &dsc, sri, v);
if (error)
return error;
@@ -383,15 +446,25 @@ scrub_item_call_kernel_again(
bool
scrub_item_schedule_work(
struct scrub_item *sri,
- uint8_t state_flags)
+ uint8_t state_flags,
+ const unsigned int *schedule_deps)
{
unsigned int scrub_type;
unsigned int nr = 0;
foreach_scrub_type(scrub_type) {
+ unsigned int j;
+
+ sri->sri_state[scrub_type] &= ~SCRUB_ITEM_BARRIER;
+
if (!(sri->sri_state[scrub_type] & state_flags))
continue;
+ foreach_scrub_type(j) {
+ if (schedule_deps[scrub_type] & (1U << j))
+ sri->sri_state[j] |= SCRUB_ITEM_BARRIER;
+ }
+
sri->sri_tries[scrub_type] = SCRUB_ITEM_MAX_RETRIES;
nr++;
}
@@ -411,7 +484,7 @@ scrub_item_check_file(
struct xfs_fd *xfdp = &ctx->mnt;
int error = 0;
- if (!scrub_item_schedule_work(sri, SCRUB_ITEM_NEEDSCHECK))
+ if (!scrub_item_schedule_work(sri, SCRUB_ITEM_NEEDSCHECK, scrub_deps))
return 0;
/*
diff --git a/scrub/scrub.h b/scrub/scrub.h
index 183b89379..c3eed1b26 100644
--- a/scrub/scrub.h
+++ b/scrub/scrub.h
@@ -30,6 +30,9 @@ enum xfrog_scrub_group;
/* This scrub type needs to be checked. */
#define SCRUB_ITEM_NEEDSCHECK (1 << 5)
+/* Scrub barrier. */
+#define SCRUB_ITEM_BARRIER (1 << 6)
+
/* All of the state flags that we need to prioritize repair work. */
#define SCRUB_ITEM_REPAIR_ANY (SCRUB_ITEM_CORRUPT | \
SCRUB_ITEM_PREEN | \
@@ -126,6 +129,20 @@ scrub_item_check(struct scrub_ctx *ctx, struct scrub_item *sri)
return scrub_item_check_file(ctx, sri, -1);
}
+/* Count the number of metadata objects still needing a scrub. */
+static inline unsigned int
+scrub_item_count_needscheck(
+ const struct scrub_item *sri)
+{
+ unsigned int ret = 0;
+ unsigned int i;
+
+ foreach_scrub_type(i)
+ if (sri->sri_state[i] & SCRUB_ITEM_NEEDSCHECK)
+ ret++;
+ return ret;
+}
+
void scrub_report_preen_triggers(struct scrub_ctx *ctx);
bool can_scrub_fs_metadata(struct scrub_ctx *ctx);
diff --git a/scrub/scrub_private.h b/scrub/scrub_private.h
index d9de18ce1..c5e0a7c08 100644
--- a/scrub/scrub_private.h
+++ b/scrub/scrub_private.h
@@ -13,6 +13,7 @@ void xfrog_scrubv_from_item(struct xfrog_scrubv *scrubv,
void xfrog_scrubv_add_item(struct xfrog_scrubv *scrubv,
const struct scrub_item *sri, unsigned int scrub_type,
bool want_repair);
+void xfrog_scrubv_add_barrier(struct xfrog_scrubv *scrubv);
struct scrubv_descr {
struct xfrog_scrubv *scrubv;
@@ -116,6 +117,7 @@ scrub_item_schedule_retry(struct scrub_item *sri, unsigned int scrub_type)
bool scrub_item_call_kernel_again(struct scrub_item *sri, uint8_t work_mask,
const struct scrub_item *old);
-bool scrub_item_schedule_work(struct scrub_item *sri, uint8_t state_flags);
+bool scrub_item_schedule_work(struct scrub_item *sri, uint8_t state_flags,
+ const unsigned int *schedule_deps);
#endif /* XFS_SCRUB_SCRUB_PRIVATE_H_ */
next prev parent reply other threads:[~2024-07-30 1:32 UTC|newest]
Thread overview: 297+ 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 ` [PATCH 7/7] xfs_scrub: tune fstrim minlen parameter based on free space histograms Darrick J. Wong
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 ` Darrick J. Wong [this message]
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-02 0:53 [PATCHSET v30.7 15/16] xfs_scrub: vectorize kernel calls Darrick J. Wong
2024-07-02 1:24 ` [PATCH 09/10] xfs_scrub: use scrub barriers to reduce " Darrick J. Wong
2024-07-02 6:58 ` Christoph Hellwig
2023-12-31 19:51 [PATCHSET 6/6] xfs_scrub: vectorize " Darrick J. Wong
2023-12-31 23:22 ` [PATCH 09/10] xfs_scrub: use scrub barriers to reduce " 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=172229852474.1353240.7183452625768502480.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).