From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org
Cc: linux-xfs@vger.kernel.org
Subject: [PATCH 34/39] xfs: online repair of realtime bitmaps for a realtime group
Date: Sun, 31 Dec 2023 13:40:39 -0800 [thread overview]
Message-ID: <170404850446.1764998.15564224276753988976.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <170404849811.1764998.10873316890301599216.stgit@frogsfrogsfrogs>
From: Darrick J. Wong <djwong@kernel.org>
For a given rt group, regenerate the bitmap contents from the group's
realtime rmap btree.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
fs/xfs/scrub/common.h | 5
fs/xfs/scrub/repair.c | 2
fs/xfs/scrub/repair.h | 4
fs/xfs/scrub/rtbitmap.c | 19 +
fs/xfs/scrub/rtbitmap.h | 56 +++
fs/xfs/scrub/rtbitmap_repair.c | 676 +++++++++++++++++++++++++++++++++++++++
fs/xfs/scrub/rtsummary_repair.c | 3
fs/xfs/scrub/scrub.c | 2
fs/xfs/scrub/tempfile.c | 15 +
fs/xfs/scrub/tempswap.h | 2
fs/xfs/scrub/trace.c | 1
fs/xfs/scrub/trace.h | 149 +++++++++
12 files changed, 922 insertions(+), 12 deletions(-)
diff --git a/fs/xfs/scrub/common.h b/fs/xfs/scrub/common.h
index c0b2c62d4bd82..5dc481f69d160 100644
--- a/fs/xfs/scrub/common.h
+++ b/fs/xfs/scrub/common.h
@@ -274,6 +274,11 @@ int xchk_metadata_inode_forks(struct xfs_scrub *sc);
(sc)->mp->m_super->s_id, \
(sc)->ip ? (sc)->ip->i_ino : (sc)->sm->sm_ino, \
##__VA_ARGS__)
+#define xchk_xfile_rtgroup_descr(sc, fmt, ...) \
+ kasprintf(XCHK_GFP_FLAGS, "XFS (%s): rtgroup 0x%x " fmt, \
+ (sc)->mp->m_super->s_id, \
+ (sc)->sa.pag ? (sc)->sr.rtg->rtg_rgno : (sc)->sm->sm_agno, \
+ ##__VA_ARGS__)
/*
* Setting up a hook to wait for intents to drain is costly -- we have to take
diff --git a/fs/xfs/scrub/repair.c b/fs/xfs/scrub/repair.c
index 5af1a8871de55..4789014be4a36 100644
--- a/fs/xfs/scrub/repair.c
+++ b/fs/xfs/scrub/repair.c
@@ -959,7 +959,7 @@ xrep_ag_init(
#ifdef CONFIG_XFS_RT
/* Initialize all the btree cursors for a RT repair. */
-static void
+void
xrep_rtgroup_btcur_init(
struct xfs_scrub *sc,
struct xchk_rt *sr)
diff --git a/fs/xfs/scrub/repair.h b/fs/xfs/scrub/repair.h
index e7fe4c5d8de5d..b66e0b5331394 100644
--- a/fs/xfs/scrub/repair.h
+++ b/fs/xfs/scrub/repair.h
@@ -109,6 +109,7 @@ int xrep_ag_init(struct xfs_scrub *sc, struct xfs_perag *pag,
#ifdef CONFIG_XFS_RT
int xrep_rtgroup_init(struct xfs_scrub *sc, struct xfs_rtgroup *rtg,
struct xchk_rt *sr, unsigned int rtglock_flags);
+void xrep_rtgroup_btcur_init(struct xfs_scrub *sc, struct xchk_rt *sr);
int xrep_require_rtext_inuse(struct xfs_scrub *sc, xfs_rtblock_t rtbno,
xfs_filblks_t len);
#else
@@ -151,10 +152,12 @@ int xrep_metapath(struct xfs_scrub *sc);
int xrep_rtbitmap(struct xfs_scrub *sc);
int xrep_rtsummary(struct xfs_scrub *sc);
int xrep_rgsuperblock(struct xfs_scrub *sc);
+int xrep_rgbitmap(struct xfs_scrub *sc);
#else
# define xrep_rtbitmap xrep_notsupported
# define xrep_rtsummary xrep_notsupported
# define xrep_rgsuperblock xrep_notsupported
+# define xrep_rgbitmap xrep_notsupported
#endif /* CONFIG_XFS_RT */
#ifdef CONFIG_XFS_QUOTA
@@ -260,6 +263,7 @@ static inline int xrep_setup_symlink(struct xfs_scrub *sc, unsigned int *x)
#define xrep_dirtree xrep_notsupported
#define xrep_metapath xrep_notsupported
#define xrep_rgsuperblock xrep_notsupported
+#define xrep_rgbitmap xrep_notsupported
#endif /* CONFIG_XFS_ONLINE_REPAIR */
diff --git a/fs/xfs/scrub/rtbitmap.c b/fs/xfs/scrub/rtbitmap.c
index 0d823eadbdba0..47463ef336eed 100644
--- a/fs/xfs/scrub/rtbitmap.c
+++ b/fs/xfs/scrub/rtbitmap.c
@@ -19,9 +19,11 @@
#include "xfs_rtgroup.h"
#include "xfs_rmap.h"
#include "xfs_rtrmap_btree.h"
+#include "xfs_swapext.h"
#include "scrub/scrub.h"
#include "scrub/common.h"
#include "scrub/repair.h"
+#include "scrub/tempswap.h"
#include "scrub/rtbitmap.h"
#include "scrub/btree.h"
@@ -45,15 +47,26 @@ xchk_setup_rgbitmap(
{
struct xfs_mount *mp = sc->mp;
struct xchk_rgbitmap *rgb;
+ unsigned int wordcnt = xchk_rgbitmap_wordcnt(sc);
int error;
- rgb = kzalloc(sizeof(struct xchk_rgbitmap), XCHK_GFP_FLAGS);
+ if (xchk_need_intent_drain(sc))
+ xchk_fsgates_enable(sc, XCHK_FSGATES_DRAIN);
+
+ rgb = kzalloc(struct_size(rgb, words, wordcnt), XCHK_GFP_FLAGS);
if (!rgb)
return -ENOMEM;
rgb->sc = sc;
sc->buf = rgb;
+ rgb->rtglock_flags = XCHK_RTGLOCK_ALL;
- error = xchk_trans_alloc(sc, 0);
+ if (xchk_could_repair(sc)) {
+ error = xrep_setup_rgbitmap(sc, rgb);
+ if (error)
+ return error;
+ }
+
+ error = xchk_trans_alloc(sc, rgb->rtb.resblks);
if (error)
return error;
@@ -66,7 +79,7 @@ xchk_setup_rgbitmap(
return error;
error = xchk_rtgroup_init(sc, sc->sm->sm_agno, &sc->sr,
- XCHK_RTGLOCK_ALL);
+ rgb->rtglock_flags);
if (error)
return error;
diff --git a/fs/xfs/scrub/rtbitmap.h b/fs/xfs/scrub/rtbitmap.h
index 42d50fa48a0ec..6ff897f0871f8 100644
--- a/fs/xfs/scrub/rtbitmap.h
+++ b/fs/xfs/scrub/rtbitmap.h
@@ -13,19 +13,75 @@ struct xchk_rtbitmap {
unsigned int resblks;
};
+/*
+ * We use an xfile to construct new bitmap blocks for the portion of the
+ * rtbitmap file that we're replacing. Whereas the ondisk bitmap must be
+ * accessed through the buffer cache, the xfile bitmap supports direct
+ * word-level accesses. Therefore, we create a small abstraction for linear
+ * access.
+ */
+typedef unsigned long long xrep_wordoff_t;
+typedef unsigned int xrep_wordcnt_t;
+
+/* Mask to round an rtx down to the nearest bitmap word. */
+#define XREP_RTBMP_WORDMASK ((1ULL << XFS_NBWORDLOG) - 1)
+
struct xchk_rgbitmap {
struct xfs_scrub *sc;
struct xchk_rtbitmap rtb;
+#ifdef CONFIG_XFS_ONLINE_REPAIR
+ struct xfs_rtalloc_args args;
+ struct xrep_tempswap tempswap;
+#endif
+
/* The next free rt block that we expect to see. */
xfs_rtblock_t next_free_rtblock;
+
+ /* file offset inside the rtbitmap where we start swapping */
+ xfs_fileoff_t group_rbmoff;
+
+ /* number of rtbitmap blocks for this group */
+ xfs_filblks_t group_rbmlen;
+
+ /* The next rtgroup block we expect to see during our rtrmapbt walk. */
+ xfs_rgblock_t next_rgbno;
+
+ /* rtgroup lock flags */
+ unsigned int rtglock_flags;
+
+ /* rtword position of xfile as we write buffers to disk. */
+ xrep_wordoff_t prep_wordoff;
+
+ /* Memory buffer full of 1s for rgbitmap repair. */
+ union xfs_rtword_raw words[];
};
#ifdef CONFIG_XFS_ONLINE_REPAIR
int xrep_setup_rtbitmap(struct xfs_scrub *sc, struct xchk_rtbitmap *rtb);
+int xrep_setup_rgbitmap(struct xfs_scrub *sc, struct xchk_rgbitmap *rgb);
+
+/*
+ * How big should the words[] buffer be?
+ *
+ * For repairs, we want a full fsblock worth of space so that we can memcpy a
+ * buffer full of 1s into the xfile bitmap. The xfile bitmap doesn't have
+ * rtbitmap block headers, so we don't use blockwsize. Scrub doesn't use the
+ * words buffer at all.
+ */
+static inline unsigned int
+xchk_rgbitmap_wordcnt(
+ struct xfs_scrub *sc)
+{
+ if (xchk_could_repair(sc))
+ return sc->mp->m_sb.sb_blocksize >> XFS_WORDLOG;
+ return 0;
+}
#else
# define xrep_setup_rtbitmap(sc, rtb) (0)
+# define xrep_setup_rgbitmap(sc, rgb) (0)
+# define xchk_rgbitmap_wordcnt(sc) (0)
#endif /* CONFIG_XFS_ONLINE_REPAIR */
#endif /* __XFS_SCRUB_RTBITMAP_H__ */
diff --git a/fs/xfs/scrub/rtbitmap_repair.c b/fs/xfs/scrub/rtbitmap_repair.c
index 46f5d5f605c91..db87ce51c35fc 100644
--- a/fs/xfs/scrub/rtbitmap_repair.c
+++ b/fs/xfs/scrub/rtbitmap_repair.c
@@ -12,17 +12,693 @@
#include "xfs_btree.h"
#include "xfs_log_format.h"
#include "xfs_trans.h"
+#include "xfs_rtalloc.h"
#include "xfs_inode.h"
#include "xfs_bit.h"
#include "xfs_bmap.h"
#include "xfs_bmap_btree.h"
+#include "xfs_rmap.h"
+#include "xfs_rtrmap_btree.h"
+#include "xfs_swapext.h"
+#include "xfs_rtbitmap.h"
+#include "xfs_rtgroup.h"
#include "scrub/scrub.h"
#include "scrub/common.h"
#include "scrub/trace.h"
#include "scrub/repair.h"
#include "scrub/xfile.h"
+#include "scrub/tempfile.h"
+#include "scrub/tempswap.h"
+#include "scrub/reap.h"
#include "scrub/rtbitmap.h"
+/* rt bitmap content repairs */
+
+/* Set up to repair the realtime bitmap for this group. */
+int
+xrep_setup_rgbitmap(
+ struct xfs_scrub *sc,
+ struct xchk_rgbitmap *rgb)
+{
+ struct xfs_mount *mp = sc->mp;
+ char *descr;
+ unsigned long long blocks = 0;
+ unsigned long long rtbmp_words;
+ int error;
+
+ error = xrep_tempfile_create(sc, S_IFREG);
+ if (error)
+ return error;
+
+ /* Create an xfile to hold our reconstructed bitmap. */
+ rtbmp_words = xfs_rtbitmap_wordcount(mp, mp->m_sb.sb_rextents);
+ descr = xchk_xfile_rtgroup_descr(sc, "bitmap file");
+ error = xfile_create(descr, rtbmp_words << XFS_WORDLOG, &sc->xfile);
+ kfree(descr);
+ if (error)
+ return error;
+
+ /*
+ * Reserve enough blocks to write out a completely new bitmap file,
+ * plus twice as many blocks as we would need if we can only allocate
+ * one block per data fork mapping. This should cover the
+ * preallocation of the temporary file and swapping the extent
+ * mappings.
+ *
+ * We cannot use xfs_swapext_estimate because we have not yet
+ * constructed the replacement bitmap and therefore do not know how
+ * many extents it will use. By the time we do, we will have a dirty
+ * transaction (which we cannot drop because we cannot drop the
+ * rtbitmap ILOCK) and cannot ask for more reservation.
+ */
+ blocks = mp->m_sb.sb_rbmblocks;
+ blocks += xfs_bmbt_calc_size(mp, blocks) * 2;
+ if (blocks > UINT_MAX)
+ return -EOPNOTSUPP;
+
+ rgb->rtb.resblks += blocks;
+
+ /*
+ * Grab support for atomic extent swapping before we allocate any
+ * transactions or grab ILOCKs.
+ */
+ error = xrep_tempswap_grab_log_assist(sc);
+ if (error)
+ return error;
+
+ /*
+ * We must hold rbmip with ILOCK_EXCL to use the extent swap at the end
+ * of the repair function. Change the desired rtglock flags.
+ */
+ rgb->rtglock_flags &= ~XFS_RTGLOCK_BITMAP_SHARED;
+ rgb->rtglock_flags |= XFS_RTGLOCK_BITMAP;
+ return 0;
+}
+
+static inline xrep_wordoff_t
+rtx_to_wordoff(
+ struct xfs_mount *mp,
+ xfs_rtxnum_t rtx)
+{
+ return rtx >> XFS_NBWORDLOG;
+}
+
+static inline xrep_wordcnt_t
+rtxlen_to_wordcnt(
+ xfs_rtxlen_t rtxlen)
+{
+ return rtxlen >> XFS_NBWORDLOG;
+}
+
+/* Helper functions to record rtwords in an xfile. */
+
+static inline int
+xfbmp_load(
+ struct xchk_rgbitmap *rgb,
+ xrep_wordoff_t wordoff,
+ xfs_rtword_t *word)
+{
+ union xfs_rtword_raw urk;
+ int error;
+
+ ASSERT(xfs_has_rtgroups(rgb->sc->mp));
+
+ error = xfile_obj_load(rgb->sc->xfile, &urk,
+ sizeof(union xfs_rtword_raw),
+ wordoff << XFS_WORDLOG);
+ if (error)
+ return error;
+
+ *word = le32_to_cpu(urk.rtg);
+ return 0;
+}
+
+static inline int
+xfbmp_store(
+ struct xchk_rgbitmap *rgb,
+ xrep_wordoff_t wordoff,
+ const xfs_rtword_t word)
+{
+ union xfs_rtword_raw urk;
+
+ ASSERT(xfs_has_rtgroups(rgb->sc->mp));
+
+ urk.rtg = cpu_to_le32(word);
+ return xfile_obj_store(rgb->sc->xfile, &urk,
+ sizeof(union xfs_rtword_raw),
+ wordoff << XFS_WORDLOG);
+}
+
+static inline int
+xfbmp_copyin(
+ struct xchk_rgbitmap *rgb,
+ xrep_wordoff_t wordoff,
+ const union xfs_rtword_raw *word,
+ xrep_wordcnt_t nr_words)
+{
+ return xfile_obj_store(rgb->sc->xfile, word, nr_words << XFS_WORDLOG,
+ wordoff << XFS_WORDLOG);
+}
+
+static inline int
+xfbmp_copyout(
+ struct xchk_rgbitmap *rgb,
+ xrep_wordoff_t wordoff,
+ union xfs_rtword_raw *word,
+ xrep_wordcnt_t nr_words)
+{
+ return xfile_obj_load(rgb->sc->xfile, word, nr_words << XFS_WORDLOG,
+ wordoff << XFS_WORDLOG);
+}
+
+/*
+ * Preserve the portions of the rtbitmap block for the start of this rtgroup
+ * that map to the previous rtgroup.
+ */
+STATIC int
+xrep_rgbitmap_load_before(
+ struct xchk_rgbitmap *rgb)
+{
+ struct xfs_scrub *sc = rgb->sc;
+ struct xfs_mount *mp = sc->mp;
+ struct xfs_rtgroup *rtg = sc->sr.rtg;
+ xrep_wordoff_t wordoff;
+ xfs_rtblock_t group_rtbno;
+ xfs_rtxnum_t group_rtx, rbmoff_rtx;
+ xfs_rtword_t ondisk_word;
+ xfs_rtword_t xfile_word;
+ xfs_rtword_t mask;
+ xrep_wordcnt_t wordcnt;
+ int bit;
+ int error;
+
+ /*
+ * Compute the file offset within the rtbitmap block that corresponds
+ * to the start of this group, and decide if we need to read blocks
+ * from the group before this one.
+ */
+ group_rtbno = xfs_rgbno_to_rtb(mp, rtg->rtg_rgno, 0);
+ group_rtx = xfs_rtb_to_rtx(mp, group_rtbno);
+
+ rgb->group_rbmoff = xfs_rtx_to_rbmblock(mp, group_rtx);
+ rbmoff_rtx = xfs_rbmblock_to_rtx(mp, rgb->group_rbmoff);
+ rgb->prep_wordoff = rtx_to_wordoff(mp, rbmoff_rtx);
+
+ trace_xrep_rgbitmap_load(rtg, rgb->group_rbmoff, rbmoff_rtx,
+ group_rtx - 1);
+
+ if (rbmoff_rtx == group_rtx)
+ return 0;
+
+ rgb->args.mp = sc->mp;
+ rgb->args.tp = sc->tp;
+ error = xfs_rtbitmap_read_buf(&rgb->args, rgb->group_rbmoff);
+ if (error) {
+ /*
+ * Reading the existing rbmblock failed, and we must deal with
+ * the part of the rtbitmap block that corresponds to the
+ * previous group. The most conservative option is to fill
+ * that part of the bitmap with zeroes so that it won't get
+ * allocated. The xfile contains zeroes already, so we can
+ * return.
+ */
+ return 0;
+ }
+
+ /*
+ * Copy full rtbitmap words into memory from the beginning of the
+ * ondisk block until we get to the word that corresponds to the start
+ * of this group.
+ */
+ wordoff = rtx_to_wordoff(mp, rbmoff_rtx);
+ wordcnt = rtxlen_to_wordcnt(group_rtx - rbmoff_rtx);
+ if (wordcnt > 0) {
+ union xfs_rtword_raw *p;
+
+ p = xfs_rbmblock_wordptr(&rgb->args, 0);
+ error = xfbmp_copyin(rgb, wordoff, p, wordcnt);
+ if (error)
+ goto out_rele;
+
+ trace_xrep_rgbitmap_load_words(mp, rgb->group_rbmoff, wordoff,
+ wordcnt);
+ wordoff += wordcnt;
+ }
+
+ /*
+ * Compute the bit position of the first rtextent of this group. If
+ * the bit position is zero, we don't have to RMW a partial word and
+ * move to the next step.
+ */
+ bit = group_rtx & XREP_RTBMP_WORDMASK;
+ if (bit == 0)
+ goto out_rele;
+
+ /*
+ * Create a mask of the bits that we want to load from disk. These
+ * bits track space in a different rtgroup, which is why we must
+ * preserve them even as we replace parts of the bitmap.
+ */
+ mask = ~((((xfs_rtword_t)1 << (XFS_NBWORD - bit)) - 1) << bit);
+
+ error = xfbmp_load(rgb, wordoff, &xfile_word);
+ if (error)
+ goto out_rele;
+ ondisk_word = xfs_rtbitmap_getword(&rgb->args, wordcnt);
+
+ trace_xrep_rgbitmap_load_word(mp, wordoff, bit, ondisk_word,
+ xfile_word, mask);
+
+ xfile_word &= ~mask;
+ xfile_word |= (ondisk_word & mask);
+
+ error = xfbmp_store(rgb, wordoff, xfile_word);
+ if (error)
+ goto out_rele;
+
+out_rele:
+ xfs_rtbuf_cache_relse(&rgb->args);
+ return error;
+}
+
+/*
+ * Preserve the portions of the rtbitmap block for the end of this rtgroup
+ * that map to the next rtgroup.
+ */
+STATIC int
+xrep_rgbitmap_load_after(
+ struct xchk_rgbitmap *rgb)
+{
+ struct xfs_scrub *sc = rgb->sc;
+ struct xfs_mount *mp = rgb->sc->mp;
+ struct xfs_rtgroup *rtg = rgb->sc->sr.rtg;
+ xrep_wordoff_t wordoff;
+ xfs_rtblock_t last_rtbno;
+ xfs_rtxnum_t last_group_rtx, last_rbmblock_rtx;
+ xfs_fileoff_t last_group_rbmoff;
+ xfs_rtword_t ondisk_word;
+ xfs_rtword_t xfile_word;
+ xfs_rtword_t mask;
+ xrep_wordcnt_t wordcnt;
+ unsigned int last_group_word;
+ int bit;
+ int error;
+
+ last_rtbno = xfs_rgbno_to_rtb(mp, rtg->rtg_rgno,
+ rtg->rtg_blockcount - 1);
+ last_group_rtx = xfs_rtb_to_rtx(mp, last_rtbno);
+
+ last_group_rbmoff = xfs_rtx_to_rbmblock(mp, last_group_rtx);
+ rgb->group_rbmlen = last_group_rbmoff - rgb->group_rbmoff + 1;
+ last_rbmblock_rtx = xfs_rbmblock_to_rtx(mp, last_group_rbmoff + 1) - 1;
+
+ trace_xrep_rgbitmap_load(rtg, last_group_rbmoff, last_group_rtx + 1,
+ last_rbmblock_rtx);
+
+ if (last_rbmblock_rtx == last_group_rtx ||
+ rtg->rtg_rgno == mp->m_sb.sb_rgcount - 1)
+ return 0;
+
+ rgb->args.mp = sc->mp;
+ rgb->args.tp = sc->tp;
+ error = xfs_rtbitmap_read_buf(&rgb->args, last_group_rbmoff);
+ if (error) {
+ /*
+ * Reading the existing rbmblock failed, and we must deal with
+ * the part of the rtbitmap block that corresponds to the
+ * previous group. The most conservative option is to fill
+ * that part of the bitmap with zeroes so that it won't get
+ * allocated. The xfile contains zeroes already, so we can
+ * return.
+ */
+ return 0;
+ }
+
+ /*
+ * Compute the bit position of the first rtextent of the next group.
+ * If the bit position is zero, we don't have to RMW a partial word
+ * and move to the next step.
+ */
+ wordoff = rtx_to_wordoff(mp, last_group_rtx);
+ bit = (last_group_rtx + 1) & XREP_RTBMP_WORDMASK;
+ if (bit == 0)
+ goto copy_words;
+
+ /*
+ * Create a mask of the bits that we want to load from disk. These
+ * bits track space in a different rtgroup, which is why we must
+ * preserve them even as we replace parts of the bitmap.
+ */
+ mask = (((xfs_rtword_t)1 << (XFS_NBWORD - bit)) - 1) << bit;
+
+ error = xfbmp_load(rgb, wordoff, &xfile_word);
+ if (error)
+ goto out_rele;
+ last_group_word = xfs_rtx_to_rbmword(mp, last_group_rtx);
+ ondisk_word = xfs_rtbitmap_getword(&rgb->args, last_group_word);
+
+ trace_xrep_rgbitmap_load_word(mp, wordoff, bit, ondisk_word,
+ xfile_word, mask);
+
+ xfile_word &= ~mask;
+ xfile_word |= (ondisk_word & mask);
+
+ error = xfbmp_store(rgb, wordoff, xfile_word);
+ if (error)
+ goto out_rele;
+
+copy_words:
+ /* Copy as many full words as we can. */
+ wordoff++;
+ wordcnt = rtxlen_to_wordcnt(last_rbmblock_rtx - last_group_rtx);
+ if (wordcnt > 0) {
+ union xfs_rtword_raw *p;
+
+ p = xfs_rbmblock_wordptr(&rgb->args,
+ mp->m_blockwsize - wordcnt);
+ error = xfbmp_copyin(rgb, wordoff, p, wordcnt);
+ if (error)
+ goto out_rele;
+
+ trace_xrep_rgbitmap_load_words(mp, last_group_rbmoff, wordoff,
+ wordcnt);
+ }
+
+out_rele:
+ xfs_rtbuf_cache_relse(&rgb->args);
+ return error;
+}
+
+/* Perform a logical OR operation on an rtword in the incore bitmap. */
+static int
+xrep_rgbitmap_or(
+ struct xchk_rgbitmap *rgb,
+ xrep_wordoff_t wordoff,
+ xfs_rtword_t mask)
+{
+ xfs_rtword_t word;
+ int error;
+
+ error = xfbmp_load(rgb, wordoff, &word);
+ if (error)
+ return error;
+
+ trace_xrep_rgbitmap_or(rgb->sc->mp, wordoff, mask, word);
+
+ return xfbmp_store(rgb, wordoff, word | mask);
+}
+
+/*
+ * Mark as free every rt extent between the next rt block we expected to see
+ * in the rtrmap records and the given rt block.
+ */
+STATIC int
+xrep_rgbitmap_mark_free(
+ struct xchk_rgbitmap *rgb,
+ xfs_rgblock_t rgbno)
+{
+ struct xfs_mount *mp = rgb->sc->mp;
+ struct xfs_rtgroup *rtg = rgb->sc->sr.rtg;
+ xfs_rtblock_t rtbno;
+ xfs_rtxnum_t startrtx;
+ xfs_rtxnum_t nextrtx;
+ xrep_wordoff_t wordoff, nextwordoff;
+ unsigned int bit;
+ unsigned int bufwsize;
+ xfs_extlen_t mod;
+ xfs_rtword_t mask;
+ int error;
+
+ if (!xfs_verify_rgbext(rtg, rgb->next_rgbno, rgbno - rgb->next_rgbno))
+ return -EFSCORRUPTED;
+
+ /*
+ * Convert rt blocks to rt extents The block range we find must be
+ * aligned to an rtextent boundary on both ends.
+ */
+ rtbno = xfs_rgbno_to_rtb(mp, rtg->rtg_rgno, rgb->next_rgbno);
+ startrtx = xfs_rtb_to_rtxrem(mp, rtbno, &mod);
+ if (mod)
+ return -EFSCORRUPTED;
+
+ rtbno = xfs_rgbno_to_rtb(mp, rtg->rtg_rgno, rgbno - 1);
+ nextrtx = xfs_rtb_to_rtxrem(mp, rtbno, &mod) + 1;
+ if (mod != mp->m_sb.sb_rextsize - 1)
+ return -EFSCORRUPTED;
+
+ trace_xrep_rgbitmap_record_free(mp, startrtx, nextrtx - 1);
+
+ /* Set bits as needed to round startrtx up to the nearest word. */
+ bit = startrtx & XREP_RTBMP_WORDMASK;
+ if (bit) {
+ xfs_rtblock_t len = nextrtx - startrtx;
+ unsigned int lastbit;
+
+ lastbit = XFS_RTMIN(bit + len, XFS_NBWORD);
+ mask = (((xfs_rtword_t)1 << (lastbit - bit)) - 1) << bit;
+
+ error = xrep_rgbitmap_or(rgb, rtx_to_wordoff(mp, startrtx),
+ mask);
+ if (error || lastbit - bit == len)
+ return error;
+ startrtx += XFS_NBWORD - bit;
+ }
+
+ /* Set bits as needed to round nextrtx down to the nearest word. */
+ bit = nextrtx & XREP_RTBMP_WORDMASK;
+ if (bit) {
+ mask = ((xfs_rtword_t)1 << bit) - 1;
+
+ error = xrep_rgbitmap_or(rgb, rtx_to_wordoff(mp, nextrtx),
+ mask);
+ if (error || startrtx + bit == nextrtx)
+ return error;
+ nextrtx -= bit;
+ }
+
+ trace_xrep_rgbitmap_record_free_bulk(mp, startrtx, nextrtx - 1);
+
+ /* Set all the words in between, up to a whole fs block at once. */
+ wordoff = rtx_to_wordoff(mp, startrtx);
+ nextwordoff = rtx_to_wordoff(mp, nextrtx);
+ bufwsize = mp->m_sb.sb_blocksize >> XFS_WORDLOG;
+
+ while (wordoff < nextwordoff) {
+ xrep_wordoff_t rem;
+ xrep_wordcnt_t wordcnt;
+
+ wordcnt = min_t(xrep_wordcnt_t, nextwordoff - wordoff,
+ bufwsize);
+
+ /*
+ * Try to keep us aligned to the rtwords buffer to reduce the
+ * number of xfile writes.
+ */
+ rem = wordoff & (bufwsize - 1);
+ if (rem)
+ wordcnt = min_t(xrep_wordcnt_t, wordcnt,
+ bufwsize - rem);
+
+ error = xfbmp_copyin(rgb, wordoff, rgb->words, wordcnt);
+ if (error)
+ return error;
+
+ wordoff += wordcnt;
+ }
+
+ return 0;
+}
+
+/* Set free space in the rtbitmap based on rtrmapbt records. */
+STATIC int
+xrep_rgbitmap_walk_rtrmap(
+ struct xfs_btree_cur *cur,
+ const struct xfs_rmap_irec *rec,
+ void *priv)
+{
+ struct xchk_rgbitmap *rgb = priv;
+ int error = 0;
+
+ if (xchk_should_terminate(rgb->sc, &error))
+ return error;
+
+ if (rgb->next_rgbno < rec->rm_startblock) {
+ error = xrep_rgbitmap_mark_free(rgb, rec->rm_startblock);
+ if (error)
+ return error;
+ }
+
+ rgb->next_rgbno = max(rgb->next_rgbno,
+ rec->rm_startblock + rec->rm_blockcount);
+ return 0;
+}
+
+/*
+ * Walk the rtrmapbt to find all the gaps between records, and mark the gaps
+ * in the realtime bitmap that we're computing.
+ */
+STATIC int
+xrep_rgbitmap_find_freespace(
+ struct xchk_rgbitmap *rgb)
+{
+ struct xfs_scrub *sc = rgb->sc;
+ struct xfs_mount *mp = sc->mp;
+ struct xfs_rtgroup *rtg = sc->sr.rtg;
+ int error;
+
+ /* Prepare a buffer of ones so that we can accelerate bulk setting. */
+ memset(rgb->words, 0xFF, mp->m_sb.sb_blocksize);
+
+ xrep_rtgroup_btcur_init(sc, &sc->sr);
+ error = xfs_rmap_query_all(sc->sr.rmap_cur, xrep_rgbitmap_walk_rtrmap,
+ rgb);
+ if (error)
+ goto out;
+
+ /*
+ * Mark as free every possible rt extent from the last one we saw to
+ * the end of the rt group.
+ */
+ if (rgb->next_rgbno < rtg->rtg_blockcount) {
+ error = xrep_rgbitmap_mark_free(rgb, rtg->rtg_blockcount);
+ if (error)
+ goto out;
+ }
+
+out:
+ xchk_rtgroup_btcur_free(&sc->sr);
+ return error;
+}
+
+static int
+xrep_rgbitmap_prep_buf(
+ struct xfs_scrub *sc,
+ struct xfs_buf *bp,
+ void *data)
+{
+ struct xchk_rgbitmap *rgb = data;
+ struct xfs_mount *mp = sc->mp;
+ union xfs_rtword_raw *ondisk;
+ int error;
+
+ rgb->args.mp = sc->mp;
+ rgb->args.tp = sc->tp;
+ rgb->args.rbmbp = bp;
+ ondisk = xfs_rbmblock_wordptr(&rgb->args, 0);
+ rgb->args.rbmbp = NULL;
+
+ error = xfbmp_copyout(rgb, rgb->prep_wordoff, ondisk,
+ mp->m_blockwsize);
+ if (error)
+ return error;
+
+ if (xfs_has_rtgroups(sc->mp)) {
+ struct xfs_rtbuf_blkinfo *hdr = bp->b_addr;
+
+ hdr->rt_magic = cpu_to_be32(XFS_RTBITMAP_MAGIC);
+ hdr->rt_owner = cpu_to_be64(sc->ip->i_ino);
+ hdr->rt_blkno = cpu_to_be64(xfs_buf_daddr(bp));
+ hdr->rt_lsn = 0;
+ uuid_copy(&hdr->rt_uuid, &sc->mp->m_sb.sb_meta_uuid);
+ bp->b_ops = &xfs_rtbitmap_buf_ops;
+ } else {
+ bp->b_ops = &xfs_rtbuf_ops;
+ }
+
+ rgb->prep_wordoff += mp->m_blockwsize;
+ xfs_trans_buf_set_type(sc->tp, bp, XFS_BLFT_RTBITMAP_BUF);
+ return 0;
+}
+
+/* Repair the realtime bitmap for this rt group. */
+int
+xrep_rgbitmap(
+ struct xfs_scrub *sc)
+{
+ struct xchk_rgbitmap *rgb = sc->buf;
+ int error;
+
+ /*
+ * We require the realtime rmapbt (and atomic file updates) to rebuild
+ * anything.
+ */
+ if (!xfs_has_rtrmapbt(sc->mp))
+ return -EOPNOTSUPP;
+
+ /*
+ * If the start or end of this rt group happens to be in the middle of
+ * an rtbitmap block, try to read in the parts of the bitmap that are
+ * from some other group.
+ */
+ error = xrep_rgbitmap_load_before(rgb);
+ if (error)
+ return error;
+ error = xrep_rgbitmap_load_after(rgb);
+ if (error)
+ return error;
+
+ /*
+ * Generate the new rtbitmap data. We don't need the rtbmp information
+ * once this call is finished.
+ */
+ error = xrep_rgbitmap_find_freespace(rgb);
+ if (error)
+ return error;
+
+ /*
+ * Try to take ILOCK_EXCL of the temporary file. We had better be the
+ * only ones holding onto this inode, but we can't block while holding
+ * the rtbitmap file's ILOCK_EXCL.
+ */
+ while (!xrep_tempfile_ilock_nowait(sc)) {
+ if (xchk_should_terminate(sc, &error))
+ return error;
+ delay(1);
+ }
+
+ /*
+ * Make sure we have space allocated for the part of the bitmap
+ * file that corresponds to this group.
+ */
+ xfs_trans_ijoin(sc->tp, sc->ip, 0);
+ xfs_trans_ijoin(sc->tp, sc->tempip, 0);
+ error = xrep_tempfile_prealloc(sc, rgb->group_rbmoff, rgb->group_rbmlen);
+ if (error)
+ return error;
+
+ /* Last chance to abort before we start committing fixes. */
+ if (xchk_should_terminate(sc, &error))
+ return error;
+
+ /* Copy the bitmap file that we generated. */
+ error = xrep_tempfile_copyin(sc, rgb->group_rbmoff, rgb->group_rbmlen,
+ xrep_rgbitmap_prep_buf, rgb);
+ if (error)
+ return error;
+ error = xrep_tempfile_set_isize(sc,
+ XFS_FSB_TO_B(sc->mp, sc->mp->m_sb.sb_rbmblocks));
+ if (error)
+ return error;
+
+ /*
+ * Now swap the extents. We're done with the temporary buffer, so
+ * we can reuse it for the tempfile swapext information.
+ */
+ error = xrep_tempswap_trans_reserve(sc, XFS_DATA_FORK,
+ rgb->group_rbmoff, rgb->group_rbmlen, &rgb->tempswap);
+ if (error)
+ return error;
+
+ error = xrep_tempswap_contents(sc, &rgb->tempswap);
+ if (error)
+ return error;
+
+ /* Free the old bitmap blocks if they are free. */
+ return xrep_reap_ifork(sc, sc->tempip, XFS_DATA_FORK);
+}
+
+/* rt bitmap file repairs */
+
/* Set up to repair the realtime bitmap file metadata. */
int
xrep_setup_rtbitmap(
diff --git a/fs/xfs/scrub/rtsummary_repair.c b/fs/xfs/scrub/rtsummary_repair.c
index c66373eec436d..390c6403e8908 100644
--- a/fs/xfs/scrub/rtsummary_repair.c
+++ b/fs/xfs/scrub/rtsummary_repair.c
@@ -168,7 +168,8 @@ xrep_rtsummary(
* Now swap the extents. Nothing in repair uses the temporary buffer,
* so we can reuse it for the tempfile swapext information.
*/
- error = xrep_tempswap_trans_reserve(sc, XFS_DATA_FORK, &rts->tempswap);
+ error = xrep_tempswap_trans_reserve(sc, XFS_DATA_FORK, 0, rsumblocks,
+ &rts->tempswap);
if (error)
return error;
diff --git a/fs/xfs/scrub/scrub.c b/fs/xfs/scrub/scrub.c
index 428624d4f0c45..435003e5a1e92 100644
--- a/fs/xfs/scrub/scrub.c
+++ b/fs/xfs/scrub/scrub.c
@@ -472,7 +472,7 @@ static const struct xchk_meta_ops meta_scrub_ops[] = {
.setup = xchk_setup_rgbitmap,
.scrub = xchk_rgbitmap,
.has = xfs_has_rtgroups,
- .repair = xrep_notsupported,
+ .repair = xrep_rgbitmap,
},
[XFS_SCRUB_TYPE_RTRMAPBT] = { /* realtime group rmapbt */
.type = ST_RTGROUP,
diff --git a/fs/xfs/scrub/tempfile.c b/fs/xfs/scrub/tempfile.c
index 1dd7c4c5cff0f..e4d1c703c3195 100644
--- a/fs/xfs/scrub/tempfile.c
+++ b/fs/xfs/scrub/tempfile.c
@@ -608,6 +608,8 @@ STATIC int
xrep_tempswap_prep_request(
struct xfs_scrub *sc,
int whichfork,
+ xfs_fileoff_t off,
+ xfs_filblks_t len,
struct xrep_tempswap *tx)
{
struct xfs_swapext_req *req = &tx->req;
@@ -631,10 +633,10 @@ xrep_tempswap_prep_request(
/* Swap all mappings in both forks. */
req->ip1 = sc->tempip;
req->ip2 = sc->ip;
- req->startoff1 = 0;
- req->startoff2 = 0;
+ req->startoff1 = off;
+ req->startoff2 = off;
req->whichfork = whichfork;
- req->blockcount = XFS_MAX_FILEOFF;
+ req->blockcount = len;
req->req_flags = XFS_SWAP_REQ_LOGGED;
/* Always swap sizes when we're swapping data fork mappings. */
@@ -801,6 +803,8 @@ int
xrep_tempswap_trans_reserve(
struct xfs_scrub *sc,
int whichfork,
+ xfs_fileoff_t off,
+ xfs_filblks_t len,
struct xrep_tempswap *tx)
{
int error;
@@ -809,7 +813,7 @@ xrep_tempswap_trans_reserve(
ASSERT(xfs_isilocked(sc->ip, XFS_ILOCK_EXCL));
ASSERT(xfs_isilocked(sc->tempip, XFS_ILOCK_EXCL));
- error = xrep_tempswap_prep_request(sc, whichfork, tx);
+ error = xrep_tempswap_prep_request(sc, whichfork, off, len, tx);
if (error)
return error;
@@ -846,7 +850,8 @@ xrep_tempswap_trans_alloc(
ASSERT(sc->tp == NULL);
- error = xrep_tempswap_prep_request(sc, whichfork, tx);
+ error = xrep_tempswap_prep_request(sc, whichfork, 0, XFS_MAX_FILEOFF,
+ tx);
if (error)
return error;
diff --git a/fs/xfs/scrub/tempswap.h b/fs/xfs/scrub/tempswap.h
index 83900eef8cfc5..0be14f5f6382e 100644
--- a/fs/xfs/scrub/tempswap.h
+++ b/fs/xfs/scrub/tempswap.h
@@ -13,7 +13,7 @@ struct xrep_tempswap {
int xrep_tempswap_grab_log_assist(struct xfs_scrub *sc);
int xrep_tempswap_trans_reserve(struct xfs_scrub *sc, int whichfork,
- struct xrep_tempswap *ti);
+ xfs_fileoff_t off, xfs_filblks_t len, struct xrep_tempswap *ti);
int xrep_tempswap_trans_alloc(struct xfs_scrub *sc, int whichfork,
struct xrep_tempswap *ti);
diff --git a/fs/xfs/scrub/trace.c b/fs/xfs/scrub/trace.c
index 06f7b89920e94..4d0a6dceaa6c6 100644
--- a/fs/xfs/scrub/trace.c
+++ b/fs/xfs/scrub/trace.c
@@ -22,6 +22,7 @@
#include "xfs_rmap.h"
#include "xfs_parent.h"
#include "xfs_imeta.h"
+#include "xfs_rtgroup.h"
#include "scrub/scrub.h"
#include "scrub/xfile.h"
#include "scrub/xfarray.h"
diff --git a/fs/xfs/scrub/trace.h b/fs/xfs/scrub/trace.h
index f02914f129605..c90324ca86579 100644
--- a/fs/xfs/scrub/trace.h
+++ b/fs/xfs/scrub/trace.h
@@ -3752,6 +3752,155 @@ DEFINE_XCHK_METAPATH_EVENT(xrep_metapath_try_unlink);
DEFINE_XCHK_METAPATH_EVENT(xrep_metapath_unlink);
DEFINE_XCHK_METAPATH_EVENT(xrep_metapath_link);
+#ifdef CONFIG_XFS_RT
+DECLARE_EVENT_CLASS(xrep_rgbitmap_class,
+ TP_PROTO(struct xfs_mount *mp, xfs_rtxnum_t start, xfs_rtxnum_t end),
+ TP_ARGS(mp, start, end),
+ TP_STRUCT__entry(
+ __field(dev_t, dev)
+ __field(dev_t, rtdev)
+ __field(xfs_rtxnum_t, start)
+ __field(xfs_rtxnum_t, end)
+ ),
+ TP_fast_assign(
+ __entry->dev = mp->m_super->s_dev;
+ __entry->rtdev = mp->m_rtdev_targp->bt_dev;
+ __entry->start = start;
+ __entry->end = end;
+ ),
+ TP_printk("dev %d:%d rtdev %d:%d startrtx 0x%llx endrtx 0x%llx",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ MAJOR(__entry->rtdev), MINOR(__entry->rtdev),
+ __entry->start,
+ __entry->end)
+);
+#define DEFINE_REPAIR_RGBITMAP_EVENT(name) \
+DEFINE_EVENT(xrep_rgbitmap_class, name, \
+ TP_PROTO(struct xfs_mount *mp, xfs_rtxnum_t start, \
+ xfs_rtxnum_t end), \
+ TP_ARGS(mp, start, end))
+DEFINE_REPAIR_RGBITMAP_EVENT(xrep_rgbitmap_record_free);
+DEFINE_REPAIR_RGBITMAP_EVENT(xrep_rgbitmap_record_free_bulk);
+
+TRACE_EVENT(xrep_rgbitmap_or,
+ TP_PROTO(struct xfs_mount *mp, unsigned long long wordoff,
+ xfs_rtword_t mask, xfs_rtword_t word),
+ TP_ARGS(mp, wordoff, mask, word),
+ TP_STRUCT__entry(
+ __field(dev_t, dev)
+ __field(dev_t, rtdev)
+ __field(unsigned long long, wordoff)
+ __field(unsigned int, mask)
+ __field(unsigned int, word)
+ ),
+ TP_fast_assign(
+ __entry->dev = mp->m_super->s_dev;
+ __entry->rtdev = mp->m_rtdev_targp->bt_dev;
+ __entry->wordoff = wordoff;
+ __entry->mask = mask;
+ __entry->word = word;
+ ),
+ TP_printk("dev %d:%d rtdev %d:%d wordoff 0x%llx mask 0x%x word 0x%x",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ MAJOR(__entry->rtdev), MINOR(__entry->rtdev),
+ __entry->wordoff,
+ __entry->mask,
+ __entry->word)
+);
+
+TRACE_EVENT(xrep_rgbitmap_load,
+ TP_PROTO(struct xfs_rtgroup *rtg, xfs_fileoff_t rbmoff,
+ xfs_rtxnum_t rtx, xfs_rtxnum_t len),
+ TP_ARGS(rtg, rbmoff, rtx, len),
+ TP_STRUCT__entry(
+ __field(dev_t, dev)
+ __field(dev_t, rtdev)
+ __field(xfs_rgnumber_t, rgno)
+ __field(xfs_fileoff_t, rbmoff)
+ __field(xfs_rtxnum_t, rtx)
+ __field(xfs_rtxnum_t, len)
+ ),
+ TP_fast_assign(
+ __entry->dev = rtg->rtg_mount->m_super->s_dev;
+ __entry->rtdev = rtg->rtg_mount->m_rtdev_targp->bt_dev;
+ __entry->rgno = rtg->rtg_rgno;
+ __entry->rbmoff = rbmoff;
+ __entry->rtx = rtx;
+ __entry->len = len;
+ ),
+ TP_printk("dev %d:%d rtdev %d:%d rgno 0x%x rbmoff 0x%llx rtx 0x%llx rtxcount 0x%llx",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ MAJOR(__entry->rtdev), MINOR(__entry->rtdev),
+ __entry->rgno,
+ __entry->rbmoff,
+ __entry->rtx,
+ __entry->len)
+);
+
+TRACE_EVENT(xrep_rgbitmap_load_words,
+ TP_PROTO(struct xfs_mount *mp, xfs_fileoff_t rbmoff,
+ unsigned long long wordoff, unsigned int wordcnt),
+ TP_ARGS(mp, rbmoff, wordoff, wordcnt),
+ TP_STRUCT__entry(
+ __field(dev_t, dev)
+ __field(dev_t, rtdev)
+ __field(xfs_fileoff_t, rbmoff)
+ __field(unsigned long long, wordoff)
+ __field(unsigned int, wordcnt)
+ ),
+ TP_fast_assign(
+ __entry->dev = mp->m_super->s_dev;
+ __entry->rtdev = mp->m_rtdev_targp->bt_dev;
+ __entry->rbmoff = rbmoff;
+ __entry->wordoff = wordoff;
+ __entry->wordcnt = wordcnt;
+ ),
+ TP_printk("dev %d:%d rtdev %d:%d rbmoff 0x%llx wordoff 0x%llx wordcnt 0x%x",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ MAJOR(__entry->rtdev), MINOR(__entry->rtdev),
+ __entry->rbmoff,
+ __entry->wordoff,
+ __entry->wordcnt)
+);
+
+TRACE_EVENT(xrep_rgbitmap_load_word,
+ TP_PROTO(struct xfs_mount *mp, unsigned long long wordoff,
+ unsigned int bit, xfs_rtword_t ondisk_word,
+ xfs_rtword_t xfile_word, xfs_rtword_t word_mask),
+ TP_ARGS(mp, wordoff, bit, ondisk_word, xfile_word, word_mask),
+ TP_STRUCT__entry(
+ __field(dev_t, dev)
+ __field(dev_t, rtdev)
+ __field(unsigned long long, wordoff)
+ __field(unsigned int, bit)
+ __field(xfs_rtword_t, ondisk_word)
+ __field(xfs_rtword_t, xfile_word)
+ __field(xfs_rtword_t, word_mask)
+ ),
+ TP_fast_assign(
+ __entry->dev = mp->m_super->s_dev;
+ __entry->rtdev = mp->m_rtdev_targp->bt_dev;
+ __entry->wordoff = wordoff;
+ __entry->bit = bit;
+ __entry->ondisk_word = ondisk_word;
+ __entry->xfile_word = xfile_word;
+ __entry->word_mask = word_mask;
+ ),
+ TP_printk("dev %d:%d rtdev %d:%d wordoff 0x%llx bit %u ondisk 0x%x(0x%x) inmem 0x%x(0x%x) result 0x%x mask 0x%x",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ MAJOR(__entry->rtdev), MINOR(__entry->rtdev),
+ __entry->wordoff,
+ __entry->bit,
+ __entry->ondisk_word,
+ __entry->ondisk_word & __entry->word_mask,
+ __entry->xfile_word,
+ __entry->xfile_word & ~__entry->word_mask,
+ (__entry->xfile_word & ~__entry->word_mask) |
+ (__entry->ondisk_word & __entry->word_mask),
+ __entry->word_mask)
+);
+#endif /* CONFIG_XFS_RT */
+
#endif /* IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR) */
next prev parent reply other threads:[~2023-12-31 21:40 UTC|newest]
Thread overview: 632+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-31 18:23 [NYE PATCHRIVER 3/4] xfs: modernize the realtime volume Darrick J. Wong
2023-12-31 19:34 ` [PATCHSET v2.0 01/15] xfs: hoist inode operations to libxfs Darrick J. Wong
2023-12-31 21:01 ` [PATCH 01/21] xfs: move inode copy-on-write predicates to xfs_inode.[ch] Darrick J. Wong
2023-12-31 21:01 ` [PATCH 02/21] xfs: hoist extent size helpers to libxfs Darrick J. Wong
2023-12-31 21:01 ` [PATCH 03/21] xfs: hoist inode flag conversion functions " Darrick J. Wong
2023-12-31 21:01 ` [PATCH 04/21] xfs: hoist project id get/set " Darrick J. Wong
2023-12-31 21:02 ` [PATCH 05/21] xfs: pack icreate initialization parameters into a separate structure Darrick J. Wong
2023-12-31 21:02 ` [PATCH 06/21] xfs: implement atime updates in xfs_trans_ichgtime Darrick J. Wong
2023-12-31 21:02 ` [PATCH 07/21] xfs: use xfs_trans_ichgtime to set times when allocating inode Darrick J. Wong
2023-12-31 21:02 ` [PATCH 08/21] xfs: split new inode creation into two pieces Darrick J. Wong
2023-12-31 21:03 ` [PATCH 09/21] xfs: hoist new inode initialization functions to libxfs Darrick J. Wong
2023-12-31 21:03 ` [PATCH 10/21] xfs: push xfs_icreate_args creation out of xfs_create* Darrick J. Wong
2023-12-31 21:03 ` [PATCH 11/21] xfs: wrap inode creation dqalloc calls Darrick J. Wong
2023-12-31 21:03 ` [PATCH 12/21] xfs: hoist xfs_iunlink to libxfs Darrick J. Wong
2023-12-31 21:04 ` [PATCH 13/21] xfs: hoist xfs_{bump,drop}link " Darrick J. Wong
2023-12-31 21:04 ` [PATCH 14/21] xfs: create libxfs helper to link a new inode into a directory Darrick J. Wong
2023-12-31 21:04 ` [PATCH 15/21] xfs: create libxfs helper to link an existing " Darrick J. Wong
2023-12-31 21:04 ` [PATCH 16/21] xfs: hoist inode free function to libxfs Darrick J. Wong
2023-12-31 21:05 ` [PATCH 17/21] xfs: create libxfs helper to remove an existing inode/name from a directory Darrick J. Wong
2023-12-31 21:05 ` [PATCH 18/21] xfs: create libxfs helper to exchange two directory entries Darrick J. Wong
2023-12-31 21:05 ` [PATCH 19/21] xfs: create libxfs helper to rename " Darrick J. Wong
2023-12-31 21:05 ` [PATCH 20/21] xfs: move dirent update hooks to xfs_dir2.c Darrick J. Wong
2023-12-31 21:06 ` [PATCH 21/21] xfs: get rid of trivial rename helpers Darrick J. Wong
2023-12-31 19:35 ` [PATCHSET v2.0 02/15] xfs: metadata inode directories Darrick J. Wong
2023-12-31 21:06 ` [PATCH 01/32] xfs: don't use the incore struct xfs_sb for offsets into struct xfs_dsb Darrick J. Wong
2023-12-31 21:06 ` [PATCH 02/32] xfs: create imeta abstractions to get and set metadata inodes Darrick J. Wong
2023-12-31 21:07 ` [PATCH 03/32] xfs: create transaction reservations for metadata inode operations Darrick J. Wong
2023-12-31 21:07 ` [PATCH 04/32] xfs: refactor the v4 group/project inode pointer switch Darrick J. Wong
2023-12-31 21:07 ` [PATCH 05/32] xfs: convert quota file creation to use imeta methods Darrick J. Wong
2023-12-31 21:07 ` [PATCH 06/32] xfs: iget for metadata inodes Darrick J. Wong
2023-12-31 21:08 ` [PATCH 07/32] xfs: define the on-disk format for the metadir feature Darrick J. Wong
2023-12-31 21:08 ` [PATCH 08/32] xfs: update imeta transaction reservations for metadir Darrick J. Wong
2023-12-31 21:08 ` [PATCH 09/32] xfs: load metadata directory root at mount time Darrick J. Wong
2023-12-31 21:08 ` [PATCH 10/32] xfs: convert metadata inode lookup keys to use paths Darrick J. Wong
2023-12-31 21:09 ` [PATCH 11/32] xfs: enforce metadata inode flag Darrick J. Wong
2023-12-31 21:09 ` [PATCH 12/32] xfs: allow deletion of metadata directory files Darrick J. Wong
2023-12-31 21:09 ` [PATCH 13/32] xfs: read and write metadata inode directory Darrick J. Wong
2023-12-31 21:09 ` [PATCH 14/32] xfs: ensure metadata directory paths exist before creating files Darrick J. Wong
2023-12-31 21:10 ` [PATCH 15/32] xfs: disable the agi rotor for metadata inodes Darrick J. Wong
2023-12-31 21:10 ` [PATCH 16/32] xfs: hide metadata inodes from everyone because they are special Darrick J. Wong
2023-12-31 21:10 ` [PATCH 17/32] xfs: advertise metadata directory feature Darrick J. Wong
2023-12-31 21:10 ` [PATCH 18/32] xfs: allow bulkstat to return metadata directories Darrick J. Wong
2023-12-31 21:11 ` [PATCH 19/32] xfs: enable creation of dynamically allocated metadir path structures Darrick J. Wong
2023-12-31 21:11 ` [PATCH 20/32] xfs: don't count metadata directory files to quota Darrick J. Wong
2023-12-31 21:11 ` [PATCH 21/32] xfs: adjust xfs_bmap_add_attrfork for metadir Darrick J. Wong
2023-12-31 21:11 ` [PATCH 22/32] xfs: record health problems with the metadata directory Darrick J. Wong
2023-12-31 21:12 ` [PATCH 23/32] xfs: do not count metadata directory files when doing online quotacheck Darrick J. Wong
2023-12-31 21:12 ` [PATCH 24/32] xfs: scrub shouldn't tag metadata files with attr forks if metadir and parent pointers are on Darrick J. Wong
2023-12-31 21:12 ` [PATCH 25/32] xfs: scrub metadata directories Darrick J. Wong
2023-12-31 21:13 ` [PATCH 26/32] xfs: teach nlink scrubber to deal with metadata directory roots Darrick J. Wong
2023-12-31 21:13 ` [PATCH 27/32] xfs: don't check secondary super inode pointers when metadir enabled Darrick J. Wong
2023-12-31 21:13 ` [PATCH 28/32] xfs: move repair temporary files to the metadata directory tree Darrick J. Wong
2023-12-31 21:13 ` [PATCH 29/32] xfs: check metadata directory file path connectivity Darrick J. Wong
2023-12-31 21:14 ` [PATCH 30/32] xfs: repair " Darrick J. Wong
2023-12-31 21:14 ` [PATCH 31/32] xfs: fix up repair functions for metadata directory roots Darrick J. Wong
2023-12-31 21:14 ` [PATCH 32/32] xfs: enable metadata directory feature Darrick J. Wong
2023-12-31 19:35 ` [PATCHSET v2.0 03/15] xfs: refactor realtime meta inode locking Darrick J. Wong
2023-12-31 21:14 ` [PATCH 1/4] xfs: refactor realtime scrubbing context management Darrick J. Wong
2023-12-31 21:15 ` [PATCH 2/4] xfs: use separate lock classes for realtime metadata inode ILOCKs Darrick J. Wong
2023-12-31 21:15 ` [PATCH 3/4] xfs: refactor realtime inode locking Darrick J. Wong
2023-12-31 21:15 ` [PATCH 4/4] xfs: remove XFS_ILOCK_RT* Darrick J. Wong
2023-12-31 19:35 ` [PATCHSET v2.0 04/15] xfsprogs: shard the realtime section Darrick J. Wong
2023-12-31 21:15 ` [PATCH 01/24] xfs: create incore realtime group structures Darrick J. Wong
2023-12-31 21:16 ` [PATCH 02/24] xfs: define the format of rt groups Darrick J. Wong
2023-12-31 21:16 ` [PATCH 03/24] xfs: reduce rt summary file levels for rtgroups filesystems Darrick J. Wong
2023-12-31 21:16 ` [PATCH 04/24] xfs: check the realtime superblock at mount time Darrick J. Wong
2023-12-31 21:16 ` [PATCH 05/24] xfs: update primary realtime super every time we update the primary fs super Darrick J. Wong
2023-12-31 21:17 ` [PATCH 06/24] xfs: write secondary realtime superblocks to disk Darrick J. Wong
2023-12-31 21:17 ` [PATCH 07/24] xfs: grow the realtime section when realtime groups are enabled Darrick J. Wong
2023-12-31 21:17 ` [PATCH 08/24] xfs: always update secondary rt supers when we update secondary fs supers Darrick J. Wong
2023-12-31 21:17 ` [PATCH 09/24] xfs: export realtime group geometry via XFS_FSOP_GEOM Darrick J. Wong
2023-12-31 21:18 ` [PATCH 10/24] xfs: check that rtblock extents do not overlap with the rt group metadata Darrick J. Wong
2023-12-31 21:18 ` [PATCH 11/24] xfs: add frextents to the lazysbcounters when rtgroups enabled Darrick J. Wong
2023-12-31 21:18 ` [PATCH 12/24] xfs: record rt group superblock errors in the health system Darrick J. Wong
2023-12-31 21:19 ` [PATCH 13/24] xfs: define locking primitives for realtime groups Darrick J. Wong
2023-12-31 21:19 ` [PATCH 14/24] xfs: export the geometry of realtime groups to userspace Darrick J. Wong
2023-12-31 21:19 ` [PATCH 15/24] xfs: add block headers to realtime bitmap blocks Darrick J. Wong
2023-12-31 21:19 ` [PATCH 16/24] xfs: encode the rtbitmap in little endian format Darrick J. Wong
2023-12-31 21:20 ` [PATCH 17/24] xfs: add block headers to realtime summary blocks Darrick J. Wong
2023-12-31 21:20 ` [PATCH 18/24] xfs: encode the rtsummary in big endian format Darrick J. Wong
2023-12-31 21:20 ` [PATCH 19/24] xfs: store rtgroup information with a bmap intent Darrick J. Wong
2023-12-31 21:20 ` [PATCH 20/24] xfs: use an incore rtgroup rotor for rtpick Darrick J. Wong
2023-12-31 21:21 ` [PATCH 21/24] xfs: scrub the realtime group superblock Darrick J. Wong
2023-12-31 21:21 ` [PATCH 22/24] xfs: repair secondary realtime group superblocks Darrick J. Wong
2023-12-31 21:21 ` [PATCH 23/24] xfs: scrub each rtgroup's portion of the rtbitmap separately Darrick J. Wong
2023-12-31 21:21 ` [PATCH 24/24] xfs: enable realtime group feature Darrick J. Wong
2023-12-31 19:35 ` [PATCHSET v2.0 05/15] xfs: enable FITRIM for the realtime section Darrick J. Wong
2023-12-31 21:22 ` [PATCH 1/1] xfs: enable FITRIM on the realtime device Darrick J. Wong
2024-06-20 19:59 ` [PATCH v2.1 " Darrick J. Wong
2023-12-31 19:36 ` [PATCHSET v2.0 06/15] xfs: refactor btrees to support records in inode root Darrick J. Wong
2023-12-31 21:22 ` [PATCH 01/14] xfs: replace shouty XFS_BM{BT,DR} macros Darrick J. Wong
2023-12-31 21:22 ` [PATCH 02/14] xfs: refactor the allocation and freeing of incore inode fork btree roots Darrick J. Wong
2023-12-31 21:22 ` [PATCH 03/14] xfs: refactor creation of bmap " Darrick J. Wong
2023-12-31 21:23 ` [PATCH 04/14] xfs: fix a sloppy memory handling bug in xfs_iroot_realloc Darrick J. Wong
2023-12-31 21:23 ` [PATCH 05/14] xfs: hoist the code that moves the incore inode fork broot memory Darrick J. Wong
2023-12-31 21:23 ` [PATCH 06/14] xfs: move the zero records logic into xfs_bmap_broot_space_calc Darrick J. Wong
2023-12-31 21:23 ` [PATCH 07/14] xfs: rearrange xfs_iroot_realloc a bit Darrick J. Wong
2023-12-31 21:24 ` [PATCH 08/14] xfs: standardize the btree maxrecs function parameters Darrick J. Wong
2023-12-31 21:24 ` [PATCH 09/14] xfs: generalize the btree root reallocation function Darrick J. Wong
2023-12-31 21:24 ` [PATCH 10/14] xfs: support leaves in the incore btree root block in xfs_iroot_realloc Darrick J. Wong
2023-12-31 21:24 ` [PATCH 11/14] xfs: hoist the node iroot update code out of xfs_btree_new_iroot Darrick J. Wong
2023-12-31 21:25 ` [PATCH 12/14] xfs: hoist the node iroot update code out of xfs_btree_kill_iroot Darrick J. Wong
2023-12-31 21:25 ` [PATCH 13/14] xfs: support storing records in the inode core root Darrick J. Wong
2023-12-31 21:25 ` [PATCH 14/14] xfs: update btree keys correctly when _insrec splits an inode root block Darrick J. Wong
2023-12-31 19:36 ` [PATCHSET v2.0 07/15] xfs: enable in-core block reservation for rt metadata Darrick J. Wong
2023-12-31 21:26 ` [PATCH 1/2] xfs: simplify xfs_ag_resv_free signature Darrick J. Wong
2023-12-31 21:26 ` [PATCH 2/2] xfs: allow inode-based btrees to reserve space in the data device Darrick J. Wong
2023-12-31 19:36 ` [PATCHSET v2.0 08/15] xfs: extent free log intent cleanups Darrick J. Wong
2023-12-31 21:26 ` [PATCH 1/9] xfs: clean up extent free log intent item tracepoint callsites Darrick J. Wong
2023-12-31 21:26 ` [PATCH 2/9] xfs: convert "skip_discard" to a proper flags bitset Darrick J. Wong
2023-12-31 21:27 ` [PATCH 3/9] xfs: pass the fsbno to xfs_perag_intent_get Darrick J. Wong
2023-12-31 21:27 ` [PATCH 4/9] xfs: add a xefi_entry helper Darrick J. Wong
2023-12-31 21:27 ` [PATCH 5/9] xfs: reuse xfs_extent_free_cancel_item Darrick J. Wong
2023-12-31 21:27 ` [PATCH 6/9] xfs: factor out a xfs_efd_add_extent helper Darrick J. Wong
2023-12-31 21:28 ` [PATCH 7/9] xfs: remove duplicate asserts in xfs_defer_extent_free Darrick J. Wong
2023-12-31 21:28 ` [PATCH 8/9] xfs: remove xfs_defer_agfl_block Darrick J. Wong
2023-12-31 21:28 ` [PATCH 9/9] xfs: move xfs_extent_free_defer_add to xfs_extfree_item.c Darrick J. Wong
2023-12-31 19:36 ` [PATCHSET v2.0 09/15] xfs: widen EFI format to support rt Darrick J. Wong
2023-12-31 21:28 ` [PATCH 1/2] xfs: support logging EFIs for realtime extents Darrick J. Wong
2023-12-31 21:29 ` [PATCH 2/2] xfs: support error injection when freeing rt extents Darrick J. Wong
2023-12-31 19:37 ` [PATCHSET v2.0 10/15] xfs: rmap log intent cleanups Darrick J. Wong
2023-12-31 21:29 ` [PATCH 01/10] xfs: attach rtgroup objects to btree cursors Darrick J. Wong
2023-12-31 21:29 ` [PATCH 02/10] xfs: give rmap btree cursor error tracepoints their own class Darrick J. Wong
2023-12-31 21:29 ` [PATCH 03/10] xfs: prepare rmap btree tracepoints for widening Darrick J. Wong
2023-12-31 21:30 ` [PATCH 04/10] xfs: clean up rmap log intent item tracepoint callsites Darrick J. Wong
2023-12-31 21:30 ` [PATCH 05/10] xfs: remove xfs_trans_set_rmap_flags Darrick J. Wong
2023-12-31 21:30 ` [PATCH 06/10] xfs: add a ri_entry helper Darrick J. Wong
2023-12-31 21:31 ` [PATCH 07/10] xfs: reuse xfs_rmap_update_cancel_item Darrick J. Wong
2023-12-31 21:31 ` [PATCH 08/10] xfs: don't bother calling xfs_rmap_finish_one_cleanup in xfs_rmap_finish_one Darrick J. Wong
2023-12-31 21:31 ` [PATCH 09/10] xfs: simplify usage of the rcur local variable " Darrick J. Wong
2023-12-31 21:31 ` [PATCH 10/10] xfs: move xfs_rmap_update_defer_add to xfs_rmap_item.c Darrick J. Wong
2023-12-31 19:37 ` [PATCHSET v2.0 11/15] xfs: realtime reverse-mapping support Darrick J. Wong
2023-12-31 21:32 ` [PATCH 01/39] xfs: prepare rmap btree cursor tracepoints for realtime Darrick J. Wong
2023-12-31 21:32 ` [PATCH 02/39] xfs: simplify the xfs_rmap_{alloc,free}_extent calling conventions Darrick J. Wong
2023-12-31 21:32 ` [PATCH 03/39] xfs: introduce realtime rmap btree definitions Darrick J. Wong
2023-12-31 21:32 ` [PATCH 04/39] xfs: define the on-disk realtime rmap btree format Darrick J. Wong
2023-12-31 21:33 ` [PATCH 05/39] xfs: realtime rmap btree transaction reservations Darrick J. Wong
2023-12-31 21:33 ` [PATCH 06/39] xfs: add realtime rmap btree operations Darrick J. Wong
2023-12-31 21:33 ` [PATCH 07/39] xfs: prepare rmap functions to deal with rtrmapbt Darrick J. Wong
2023-12-31 21:33 ` [PATCH 08/39] xfs: add a realtime flag to the rmap update log redo items Darrick J. Wong
2023-12-31 21:34 ` [PATCH 09/39] xfs: support recovering rmap intent items targetting realtime extents Darrick J. Wong
2023-12-31 21:34 ` [PATCH 10/39] xfs: add realtime rmap btree block detection to log recovery Darrick J. Wong
2023-12-31 21:34 ` [PATCH 11/39] xfs: add realtime reverse map inode to metadata directory Darrick J. Wong
2023-12-31 21:34 ` [PATCH 12/39] xfs: add metadata reservations for realtime rmap btrees Darrick J. Wong
2023-12-31 21:35 ` [PATCH 13/39] xfs: wire up a new inode fork type for the realtime rmap Darrick J. Wong
2023-12-31 21:35 ` [PATCH 14/39] xfs: allow inodes with zero extents but nonzero nblocks Darrick J. Wong
2023-12-31 21:35 ` [PATCH 15/39] xfs: use realtime EFI to free extents when realtime rmap is enabled Darrick J. Wong
2023-12-31 21:35 ` [PATCH 16/39] xfs: wire up rmap map and unmap to the realtime rmapbt Darrick J. Wong
2023-12-31 21:36 ` [PATCH 17/39] xfs: create routine to allocate and initialize a realtime rmap btree inode Darrick J. Wong
2023-12-31 21:36 ` [PATCH 18/39] xfs: rearrange xfs_fsmap.c a little bit Darrick J. Wong
2023-12-31 21:36 ` [PATCH 19/39] xfs: wire up getfsmap to the realtime reverse mapping btree Darrick J. Wong
2023-12-31 21:37 ` [PATCH 20/39] xfs: check that the rtrmapbt maxlevels doesn't increase when growing fs Darrick J. Wong
2023-12-31 21:37 ` [PATCH 21/39] xfs: add realtime rmap btree when adding rt volume Darrick J. Wong
2023-12-31 21:37 ` [PATCH 22/39] xfs: report realtime rmap btree corruption errors to the health system Darrick J. Wong
2023-12-31 21:37 ` [PATCH 23/39] xfs: fix scrub tracepoints when inode-rooted btrees are involved Darrick J. Wong
2023-12-31 21:38 ` [PATCH 24/39] xfs: allow queued realtime intents to drain before scrubbing Darrick J. Wong
2023-12-31 21:38 ` [PATCH 25/39] xfs: scrub the realtime rmapbt Darrick J. Wong
2023-12-31 21:38 ` [PATCH 26/39] xfs: cross-reference realtime bitmap to realtime rmapbt scrubber Darrick J. Wong
2023-12-31 21:38 ` [PATCH 27/39] xfs: cross-reference the realtime rmapbt Darrick J. Wong
2023-12-31 21:39 ` [PATCH 28/39] xfs: scan rt rmap when we're doing an intense rmap check of bmbt mappings Darrick J. Wong
2023-12-31 21:39 ` [PATCH 29/39] xfs: scrub the metadir path of rt rmap btree files Darrick J. Wong
2023-12-31 21:39 ` [PATCH 30/39] xfs: walk the rt reverse mapping tree when rebuilding rmap Darrick J. Wong
2023-12-31 21:39 ` [PATCH 31/39] xfs: online repair of realtime file bmaps Darrick J. Wong
2023-12-31 21:40 ` [PATCH 32/39] xfs: repair inodes that have realtime extents Darrick J. Wong
2023-12-31 21:40 ` [PATCH 33/39] xfs: repair rmap btree inodes Darrick J. Wong
2023-12-31 21:40 ` Darrick J. Wong [this message]
2023-12-31 21:40 ` [PATCH 35/39] xfs: support repairing metadata btrees rooted in metadir inodes Darrick J. Wong
2023-12-31 21:41 ` [PATCH 36/39] xfs: online repair of the realtime rmap btree Darrick J. Wong
2023-12-31 21:41 ` [PATCH 37/39] xfs: create a shadow rmap btree during realtime rmap repair Darrick J. Wong
2023-12-31 21:41 ` [PATCH 38/39] xfs: hook live realtime rmap operations during a repair operation Darrick J. Wong
2023-12-31 21:41 ` [PATCH 39/39] xfs: enable realtime rmap btree Darrick J. Wong
2023-12-31 19:37 ` [PATCHSET v2.0 12/15] xfs: refcount log intent cleanups Darrick J. Wong
2023-12-31 21:42 ` [PATCH 01/10] xfs: give refcount btree cursor error tracepoints their own class Darrick J. Wong
2023-12-31 21:42 ` [PATCH 02/10] xfs: create specialized classes for refcount tracepoints Darrick J. Wong
2023-12-31 21:42 ` [PATCH 03/10] xfs: prepare refcount btree tracepoints for widening Darrick J. Wong
2023-12-31 21:43 ` [PATCH 04/10] xfs: clean up refcount log intent item tracepoint callsites Darrick J. Wong
2023-12-31 21:43 ` [PATCH 05/10] xfs: remove xfs_trans_set_refcount_flags Darrick J. Wong
2023-12-31 21:43 ` [PATCH 06/10] xfs: add a ci_entry helper Darrick J. Wong
2023-12-31 21:43 ` [PATCH 07/10] xfs: reuse xfs_refcount_update_cancel_item Darrick J. Wong
2023-12-31 21:44 ` [PATCH 08/10] xfs: don't bother calling xfs_refcount_finish_one_cleanup in xfs_refcount_finish_one Darrick J. Wong
2023-12-31 21:44 ` [PATCH 09/10] xfs: simplify usage of the rcur local variable " Darrick J. Wong
2023-12-31 21:44 ` [PATCH 10/10] xfs: move xfs_refcount_update_defer_add to xfs_refcount_item.c Darrick J. Wong
2023-12-31 19:37 ` [PATCHSET v2.0 13/15] xfs: reflink on the realtime device Darrick J. Wong
2023-12-31 21:44 ` [PATCH 01/44] xfs: prepare refcount btree cursor tracepoints for realtime Darrick J. Wong
2023-12-31 21:45 ` [PATCH 02/44] xfs: introduce realtime refcount btree definitions Darrick J. Wong
2023-12-31 21:45 ` [PATCH 03/44] xfs: namespace the maximum length/refcount symbols Darrick J. Wong
2023-12-31 21:45 ` [PATCH 04/44] xfs: define the on-disk realtime refcount btree format Darrick J. Wong
2023-12-31 21:45 ` [PATCH 05/44] xfs: realtime refcount btree transaction reservations Darrick J. Wong
2023-12-31 21:46 ` [PATCH 06/44] xfs: add realtime refcount btree operations Darrick J. Wong
2023-12-31 21:46 ` [PATCH 07/44] xfs: prepare refcount functions to deal with rtrefcountbt Darrick J. Wong
2023-12-31 21:46 ` [PATCH 08/44] xfs: add a realtime flag to the refcount update log redo items Darrick J. Wong
2023-12-31 21:46 ` [PATCH 09/44] xfs: support recovering refcount intent items targetting realtime extents Darrick J. Wong
2023-12-31 21:47 ` [PATCH 10/44] xfs: add realtime refcount btree block detection to log recovery Darrick J. Wong
2023-12-31 21:47 ` [PATCH 11/44] xfs: add realtime refcount btree inode to metadata directory Darrick J. Wong
2023-12-31 21:47 ` [PATCH 12/44] xfs: add metadata reservations for realtime refcount btree Darrick J. Wong
2023-12-31 21:47 ` [PATCH 13/44] xfs: wire up a new inode fork type for the realtime refcount Darrick J. Wong
2023-12-31 21:48 ` [PATCH 14/44] xfs: wire up realtime refcount btree cursors Darrick J. Wong
2023-12-31 21:48 ` [PATCH 15/44] xfs: create routine to allocate and initialize a realtime refcount btree inode Darrick J. Wong
2023-12-31 21:48 ` [PATCH 16/44] xfs: update rmap to allow cow staging extents in the rt rmap Darrick J. Wong
2023-12-31 21:49 ` [PATCH 17/44] xfs: compute rtrmap btree max levels when reflink enabled Darrick J. Wong
2023-12-31 21:49 ` [PATCH 18/44] xfs: refactor reflink quota updates Darrick J. Wong
2023-12-31 21:49 ` [PATCH 19/44] xfs: enable CoW for realtime data Darrick J. Wong
2023-12-31 21:49 ` [PATCH 20/44] xfs: enable sharing of realtime file blocks Darrick J. Wong
2023-12-31 21:50 ` [PATCH 21/44] xfs: allow inodes to have the realtime and reflink flags Darrick J. Wong
2023-12-31 21:50 ` [PATCH 22/44] xfs: refcover CoW leftovers in the realtime volume Darrick J. Wong
2023-12-31 21:50 ` [PATCH 23/44] xfs: fix xfs_get_extsz_hint behavior with realtime alwayscow files Darrick J. Wong
2023-12-31 21:50 ` [PATCH 24/44] xfs: apply rt extent alignment constraints to CoW extsize hint Darrick J. Wong
2023-12-31 21:51 ` [PATCH 25/44] xfs: enable extent size hints for CoW operations Darrick J. Wong
2023-12-31 21:51 ` [PATCH 26/44] xfs: check that the rtrefcount maxlevels doesn't increase when growing fs Darrick J. Wong
2023-12-31 21:51 ` [PATCH 27/44] xfs: add realtime refcount btree when adding rt volume Darrick J. Wong
2023-12-31 21:51 ` [PATCH 28/44] xfs: report realtime refcount btree corruption errors to the health system Darrick J. Wong
2023-12-31 21:52 ` [PATCH 29/44] xfs: scrub the realtime refcount btree Darrick J. Wong
2023-12-31 21:52 ` [PATCH 30/44] xfs: cross-reference checks with the rt " Darrick J. Wong
2023-12-31 21:52 ` [PATCH 31/44] xfs: allow overlapping rtrmapbt records for shared data extents Darrick J. Wong
2023-12-31 21:52 ` [PATCH 32/44] xfs: check reference counts of gaps between rt refcount records Darrick J. Wong
2023-12-31 21:53 ` [PATCH 33/44] xfs: allow dquot rt block count to exceed rt blocks on reflink fs Darrick J. Wong
2023-12-31 21:53 ` [PATCH 34/44] xfs: detect and repair misaligned rtinherit directory cowextsize hints Darrick J. Wong
2023-12-31 21:53 ` [PATCH 35/44] xfs: scrub the metadir path of rt refcount btree files Darrick J. Wong
2023-12-31 21:53 ` [PATCH 36/44] xfs: don't flag quota rt block usage on rtreflink filesystems Darrick J. Wong
2023-12-31 21:54 ` [PATCH 37/44] xfs: check new rtbitmap records against rt refcount btree Darrick J. Wong
2023-12-31 21:54 ` [PATCH 38/44] xfs: walk the rt reference count tree when rebuilding rmap Darrick J. Wong
2023-12-31 21:54 ` [PATCH 39/44] xfs: capture realtime CoW staging extents when rebuilding rt rmapbt Darrick J. Wong
2023-12-31 21:54 ` [PATCH 40/44] xfs: online repair of the realtime refcount btree Darrick J. Wong
2023-12-31 21:55 ` [PATCH 41/44] xfs: repair inodes that have a refcount btree in the data fork Darrick J. Wong
2023-12-31 21:55 ` [PATCH 42/44] xfs: check for shared rt extents when rebuilding rt file's " Darrick J. Wong
2023-12-31 21:55 ` [PATCH 43/44] xfs: fix CoW forks for realtime files Darrick J. Wong
2023-12-31 21:56 ` [PATCH 44/44] xfs: enable realtime reflink Darrick J. Wong
2023-12-31 19:38 ` [PATCHSET v2.0 14/15] xfs: reflink with large realtime extents Darrick J. Wong
2023-12-31 21:56 ` [PATCH 1/9] vfs: explicitly pass the block size to the remap prep function Darrick J. Wong
2023-12-31 21:56 ` [PATCH 2/9] xfs: enable CoW when rt extent size is larger than 1 block Darrick J. Wong
2023-12-31 21:56 ` [PATCH 3/9] xfs: forcibly convert unwritten blocks within an rt extent before sharing Darrick J. Wong
2023-12-31 21:57 ` [PATCH 4/9] xfs: add some tracepoints for writeback Darrick J. Wong
2023-12-31 21:57 ` [PATCH 5/9] xfs: extend writeback requests to handle rt cow correctly Darrick J. Wong
2023-12-31 21:57 ` [PATCH 6/9] xfs: enable extent size hints for CoW when rtextsize > 1 Darrick J. Wong
2023-12-31 21:57 ` [PATCH 7/9] xfs: allow reflink on the rt volume when extent size is larger than 1 rt block Darrick J. Wong
2023-12-31 21:58 ` [PATCH 8/9] xfs: fix integer overflow when validating extent size hints Darrick J. Wong
2023-12-31 21:58 ` [PATCH 9/9] xfs: support realtime reflink with an extent size that isn't a power of 2 Darrick J. Wong
2023-12-31 19:38 ` [PATCHSET v2.0 15/15] xfs: enable quota for realtime voluems Darrick J. Wong
2023-12-31 21:58 ` [PATCH 1/6] xfs: attach dquots to rt metadata files when starting quota Darrick J. Wong
2023-12-31 21:58 ` [PATCH 2/6] xfs: fix chown with rt quota Darrick J. Wong
2023-12-31 21:59 ` [PATCH 3/6] xfs: fix rt growfs quota accounting Darrick J. Wong
2023-12-31 21:59 ` [PATCH 4/6] xfs: advertise realtime quota support in the xqm stat files Darrick J. Wong
2023-12-31 21:59 ` [PATCH 5/6] xfs: report realtime block quota limits on realtime directories Darrick J. Wong
2023-12-31 21:59 ` [PATCH 6/6] xfs: enable realtime quota again Darrick J. Wong
2023-12-31 19:51 ` [PATCHSET v2.0 01/17] xfsprogs: hoist inode operations to libxfs Darrick J. Wong
2023-12-31 23:22 ` [PATCH 01/28] xfs: hoist extent size helpers " Darrick J. Wong
2023-12-31 23:22 ` [PATCH 02/28] xfs: hoist inode flag conversion functions " Darrick J. Wong
2023-12-31 23:23 ` [PATCH 03/28] xfs: hoist project id get/set " Darrick J. Wong
2023-12-31 23:23 ` [PATCH 04/28] libxfs: put all the inode functions in a single file Darrick J. Wong
2023-12-31 23:23 ` [PATCH 05/28] libxfs: pass IGET flags through to xfs_iread Darrick J. Wong
2023-12-31 23:23 ` [PATCH 06/28] xfs: pack icreate initialization parameters into a separate structure Darrick J. Wong
2023-12-31 23:24 ` [PATCH 07/28] xfs: implement atime updates in xfs_trans_ichgtime Darrick J. Wong
2023-12-31 23:24 ` [PATCH 08/28] libxfs: rearrange libxfs_trans_ichgtime call when creating inodes Darrick J. Wong
2023-12-31 23:24 ` [PATCH 09/28] libxfs: set access time when creating files Darrick J. Wong
2023-12-31 23:24 ` [PATCH 10/28] libxfs: when creating a file in a directory, set the project id based on the parent Darrick J. Wong
2023-12-31 23:25 ` [PATCH 11/28] libxfs: pass flags2 from parent to child when creating files Darrick J. Wong
2023-12-31 23:25 ` [PATCH 12/28] xfs: split new inode creation into two pieces Darrick J. Wong
2023-12-31 23:25 ` [PATCH 13/28] libxfs: backport inode init code from the kernel Darrick J. Wong
2023-12-31 23:25 ` [PATCH 14/28] libxfs: remove libxfs_dir_ialloc Darrick J. Wong
2023-12-31 23:26 ` [PATCH 15/28] libxfs: implement get_random_u32 Darrick J. Wong
2023-12-31 23:26 ` [PATCH 16/28] xfs: hoist new inode initialization functions to libxfs Darrick J. Wong
2023-12-31 23:26 ` [PATCH 17/28] xfs: hoist xfs_iunlink " Darrick J. Wong
2023-12-31 23:26 ` [PATCH 18/28] xfs: hoist xfs_{bump,drop}link " Darrick J. Wong
2023-12-31 23:27 ` [PATCH 19/28] xfs: create libxfs helper to link a new inode into a directory Darrick J. Wong
2023-12-31 23:27 ` [PATCH 20/28] xfs: create libxfs helper to link an existing " Darrick J. Wong
2023-12-31 23:27 ` [PATCH 21/28] xfs: hoist inode free function to libxfs Darrick J. Wong
2023-12-31 23:28 ` [PATCH 22/28] xfs: create libxfs helper to remove an existing inode/name from a directory Darrick J. Wong
2023-12-31 23:28 ` [PATCH 23/28] xfs: create libxfs helper to exchange two directory entries Darrick J. Wong
2023-12-31 23:28 ` [PATCH 24/28] xfs: create libxfs helper to rename " Darrick J. Wong
2023-12-31 23:28 ` [PATCH 25/28] xfs: move dirent update hooks to xfs_dir2.c Darrick J. Wong
2023-12-31 23:29 ` [PATCH 26/28] xfs_db: port the iunlink command to use the libxfs iunlink function Darrick J. Wong
2023-12-31 23:29 ` [PATCH 27/28] xfs_repair: use library functions to reset root/rbm/rsum inodes Darrick J. Wong
2023-12-31 23:29 ` [PATCH 28/28] xfs_repair: use library functions for orphanage creation Darrick J. Wong
2023-12-31 19:52 ` [PATCHSET v2.0 02/17] xfsprogs: metadata inode directories Darrick J. Wong
2023-12-31 23:29 ` [PATCH 01/58] xfs: don't use the incore struct xfs_sb for offsets into struct xfs_dsb Darrick J. Wong
2023-12-31 23:30 ` [PATCH 02/58] xfs: create imeta abstractions to get and set metadata inodes Darrick J. Wong
2023-12-31 23:30 ` [PATCH 03/58] xfs: create transaction reservations for metadata inode operations Darrick J. Wong
2023-12-31 23:30 ` [PATCH 04/58] mkfs: clean up the rtinit() function Darrick J. Wong
2023-12-31 23:30 ` [PATCH 05/58] libxfs: convert all users to libxfs_imeta_create Darrick J. Wong
2023-12-31 23:31 ` [PATCH 06/58] mkfs: break up the rest of the rtinit() function Darrick J. Wong
2023-12-31 23:31 ` [PATCH 07/58] xfs: iget for metadata inodes Darrick J. Wong
2023-12-31 23:31 ` [PATCH 08/58] xfs: define the on-disk format for the metadir feature Darrick J. Wong
2023-12-31 23:31 ` [PATCH 09/58] xfs: update imeta transaction reservations for metadir Darrick J. Wong
2023-12-31 23:32 ` [PATCH 10/58] xfs: load metadata directory root at mount time Darrick J. Wong
2023-12-31 23:32 ` [PATCH 11/58] xfs: convert metadata inode lookup keys to use paths Darrick J. Wong
2023-12-31 23:32 ` [PATCH 12/58] xfs: enforce metadata inode flag Darrick J. Wong
2023-12-31 23:32 ` [PATCH 13/58] xfs: allow deletion of metadata directory files Darrick J. Wong
2023-12-31 23:33 ` [PATCH 14/58] xfs: read and write metadata inode directory Darrick J. Wong
2023-12-31 23:33 ` [PATCH 15/58] xfs: ensure metadata directory paths exist before creating files Darrick J. Wong
2023-12-31 23:33 ` [PATCH 16/58] xfs: disable the agi rotor for metadata inodes Darrick J. Wong
2023-12-31 23:34 ` [PATCH 17/58] xfs: advertise metadata directory feature Darrick J. Wong
2023-12-31 23:34 ` [PATCH 18/58] xfs: allow bulkstat to return metadata directories Darrick J. Wong
2023-12-31 23:34 ` [PATCH 19/58] xfs: enable creation of dynamically allocated metadir path structures Darrick J. Wong
2023-12-31 23:34 ` [PATCH 20/58] xfs: adjust xfs_bmap_add_attrfork for metadir Darrick J. Wong
2023-12-31 23:35 ` [PATCH 21/58] xfs: record health problems with the metadata directory Darrick J. Wong
2023-12-31 23:35 ` [PATCH 22/58] xfs: check metadata directory file path connectivity Darrick J. Wong
2023-12-31 23:35 ` [PATCH 23/58] libfrog: report metadata directories in the geometry report Darrick J. Wong
2023-12-31 23:35 ` [PATCH 24/58] libfrog: allow METADIR in xfrog_bulkstat_single5 Darrick J. Wong
2023-12-31 23:36 ` [PATCH 25/58] xfs_io: support scrubbing metadata directory paths Darrick J. Wong
2023-12-31 23:36 ` [PATCH 26/58] xfs_db: basic xfs_check support for metadir Darrick J. Wong
2023-12-31 23:36 ` [PATCH 27/58] xfs_db: report metadir support for version command Darrick J. Wong
2023-12-31 23:36 ` [PATCH 28/58] xfs_db: don't obfuscate metadata directories and attributes Darrick J. Wong
2023-12-31 23:37 ` [PATCH 29/58] xfs_db: support metadata directories in the path command Darrick J. Wong
2023-12-31 23:37 ` [PATCH 30/58] xfs_db: mask superblock fields when metadir feature is enabled Darrick J. Wong
2023-12-31 23:37 ` [PATCH 31/58] xfs_io: support the bulkstat metadata directory flag Darrick J. Wong
2023-12-31 23:37 ` [PATCH 32/58] xfs_io: support scrubbing metadata directory paths Darrick J. Wong
2023-12-31 23:38 ` [PATCH 33/58] xfs_spaceman: report health of metadir inodes too Darrick J. Wong
2023-12-31 23:38 ` [PATCH 34/58] xfs_scrub: scan metadata directories during phase 3 Darrick J. Wong
2023-12-31 23:38 ` [PATCH 35/58] xfs_scrub: re-run metafile scrubbers during phase 5 Darrick J. Wong
2023-12-31 23:38 ` [PATCH 36/58] xfs_repair: don't zero the incore secondary super when zeroing Darrick J. Wong
2023-12-31 23:39 ` [PATCH 37/58] xfs_repair: refactor metadata inode tagging Darrick J. Wong
2023-12-31 23:39 ` [PATCH 38/58] xfs_repair: reject regular directory dirents that point to metadata fieles Darrick J. Wong
2023-12-31 23:39 ` [PATCH 39/58] xfs_repair: dont check metadata directory dirent inumbers Darrick J. Wong
2023-12-31 23:40 ` [PATCH 40/58] xfs_repair: refactor fixing dotdot Darrick J. Wong
2023-12-31 23:40 ` [PATCH 41/58] xfs_repair: refactor marking of metadata inodes Darrick J. Wong
2023-12-31 23:40 ` [PATCH 42/58] xfs_repair: refactor root directory initialization Darrick J. Wong
2023-12-31 23:40 ` [PATCH 43/58] xfs_repair: refactor grabbing realtime metadata inodes Darrick J. Wong
2023-12-31 23:41 ` [PATCH 44/58] xfs_repair: check metadata inode flag Darrick J. Wong
2023-12-31 23:41 ` [PATCH 45/58] xfs_repair: rebuild the metadata directory Darrick J. Wong
2023-12-31 23:41 ` [PATCH 46/58] xfs_repair: don't let metadata and regular files mix Darrick J. Wong
2023-12-31 23:41 ` [PATCH 47/58] xfs_repair: update incore metadata state whenever we create new files Darrick J. Wong
2023-12-31 23:42 ` [PATCH 48/58] xfs_repair: pass private data pointer to scan_lbtree Darrick J. Wong
2023-12-31 23:42 ` [PATCH 49/58] xfs_repair: mark space used by metadata files Darrick J. Wong
2023-12-31 23:42 ` [PATCH 50/58] xfs_repair: adjust keep_fsinos to handle metadata directories Darrick J. Wong
2023-12-31 23:42 ` [PATCH 51/58] xfs_repair: metadata dirs are never plausible root dirs Darrick J. Wong
2023-12-31 23:43 ` [PATCH 52/58] xfs_repair: reattach quota inodes to metadata directory Darrick J. Wong
2023-12-31 23:43 ` [PATCH 53/58] xfs_repair: drop all the metadata directory files during pass 4 Darrick J. Wong
2023-12-31 23:43 ` [PATCH 54/58] xfs_repair: truncate and unmark orphaned metadata inodes Darrick J. Wong
2023-12-31 23:43 ` [PATCH 55/58] xfs_repair: do not count metadata directory files when doing quotacheck Darrick J. Wong
2023-12-31 23:44 ` [PATCH 56/58] xfs_repair: allow sysadmins to add metadata directories Darrick J. Wong
2023-12-31 23:44 ` [PATCH 57/58] mkfs.xfs: enable " Darrick J. Wong
2023-12-31 23:44 ` [PATCH 58/58] mkfs: add a utility to generate protofiles Darrick J. Wong
2023-12-31 19:52 ` [PATCHSET v2.0 03/17] xfs_db: debug realtime geometry Darrick J. Wong
2023-12-31 23:44 ` [PATCH 1/8] xfs_db: support passing the realtime device to the debugger Darrick J. Wong
2023-12-31 23:45 ` [PATCH 2/8] xfs_db: report the realtime device when associated with each io cursor Darrick J. Wong
2023-12-31 23:45 ` [PATCH 3/8] xfs_db: make the daddr command target the realtime device Darrick J. Wong
2023-12-31 23:45 ` [PATCH 4/8] xfs_db: access realtime file blocks Darrick J. Wong
2023-12-31 23:46 ` [PATCH 5/8] xfs_db: access arbitrary realtime blocks and extents Darrick J. Wong
2023-12-31 23:46 ` [PATCH 6/8] xfs_db: enable conversion of rt space units Darrick J. Wong
2023-12-31 23:46 ` [PATCH 7/8] xfs_db: convert rtbitmap geometry Darrick J. Wong
2023-12-31 23:46 ` [PATCH 8/8] xfs_db: convert rtsummary geometry Darrick J. Wong
2023-12-31 19:52 ` [PATCHSET v2.0 04/17] xfs_metadump: support external devices Darrick J. Wong
2023-12-31 23:47 ` [PATCH 1/1] xfs_db: allow setting current address to log blocks Darrick J. Wong
2023-12-31 19:52 ` [PATCHSET v2.0 05/17] xfsprogs: refactor realtime meta inode locking Darrick J. Wong
2023-12-31 23:47 ` [PATCH 1/2] xfs: refactor realtime " Darrick J. Wong
2023-12-31 23:47 ` [PATCH 2/2] xfs: remove XFS_ILOCK_RT* Darrick J. Wong
2023-12-31 19:53 ` [PATCHSET v2.0 06/17] xfsprogs: shard the realtime section Darrick J. Wong
2023-12-27 13:00 ` [PATCH 48/52] xfs_scrub: trim realtime volumes too Darrick J. Wong
2023-12-27 13:00 ` [PATCH 49/52] xfs_scrub: use histograms to speed up phase 8 on the realtime volume Darrick J. Wong
2023-12-27 13:00 ` [PATCH 50/52] mkfs: add headers to realtime bitmap blocks Darrick J. Wong
2023-12-27 13:00 ` [PATCH 51/52] mkfs: add headers to realtime summary blocks Darrick J. Wong
2023-12-27 13:01 ` [PATCH 52/52] mkfs: format realtime groups Darrick J. Wong
2023-12-31 23:47 ` [PATCH 01/52] xfs: create incore realtime group structures Darrick J. Wong
2023-12-31 23:48 ` [PATCH 02/52] xfs: define the format of rt groups Darrick J. Wong
2023-12-31 23:48 ` [PATCH 03/52] xfs: reduce rt summary file levels for rtgroups filesystems Darrick J. Wong
2023-12-31 23:48 ` [PATCH 04/52] xfs: update primary realtime super every time we update the primary fs super Darrick J. Wong
2023-12-31 23:48 ` [PATCH 05/52] xfs: write secondary realtime superblocks to disk Darrick J. Wong
2023-12-31 23:49 ` [PATCH 06/52] xfs: grow the realtime section when realtime groups are enabled Darrick J. Wong
2023-12-31 23:49 ` [PATCH 07/52] xfs: export realtime group geometry via XFS_FSOP_GEOM Darrick J. Wong
2023-12-31 23:49 ` [PATCH 08/52] xfs: check that rtblock extents do not overlap with the rt group metadata Darrick J. Wong
2023-12-31 23:49 ` [PATCH 09/52] xfs: add frextents to the lazysbcounters when rtgroups enabled Darrick J. Wong
2023-12-31 23:50 ` [PATCH 10/52] xfs: record rt group superblock errors in the health system Darrick J. Wong
2023-12-31 23:50 ` [PATCH 11/52] xfs: define locking primitives for realtime groups Darrick J. Wong
2023-12-31 23:50 ` [PATCH 12/52] xfs: export the geometry of realtime groups to userspace Darrick J. Wong
2023-12-31 23:50 ` [PATCH 13/52] xfs: add block headers to realtime bitmap blocks Darrick J. Wong
2023-12-31 23:51 ` [PATCH 14/52] xfs: encode the rtbitmap in little endian format Darrick J. Wong
2023-12-31 23:51 ` [PATCH 15/52] xfs: add block headers to realtime summary blocks Darrick J. Wong
2023-12-31 23:51 ` [PATCH 16/52] xfs: encode the rtsummary in big endian format Darrick J. Wong
2023-12-31 23:51 ` [PATCH 17/52] xfs: store rtgroup information with a bmap intent Darrick J. Wong
2023-12-31 23:52 ` [PATCH 18/52] xfs: use an incore rtgroup rotor for rtpick Darrick J. Wong
2023-12-31 23:52 ` [PATCH 19/52] xfs: scrub the realtime group superblock Darrick J. Wong
2023-12-31 23:52 ` [PATCH 20/52] xfs: repair secondary realtime group superblocks Darrick J. Wong
2023-12-31 23:53 ` [PATCH 21/52] xfs: scrub each rtgroup's portion of the rtbitmap separately Darrick J. Wong
2023-12-31 23:53 ` [PATCH 22/52] libfrog: report rt groups in output Darrick J. Wong
2023-12-31 23:53 ` [PATCH 23/52] libxfs: implement some sanity checking for enormous rgcount Darrick J. Wong
2023-12-31 23:53 ` [PATCH 24/52] xfs_repair: support realtime groups Darrick J. Wong
2023-12-31 23:54 ` [PATCH 25/52] xfs_repair: improve rtbitmap discrepancy reporting Darrick J. Wong
2023-12-31 23:54 ` [PATCH 26/52] xfs_repair: repair rtbitmap block headers Darrick J. Wong
2023-12-31 23:54 ` [PATCH 27/52] xfs_repair: repair rtsummary " Darrick J. Wong
2023-12-31 23:54 ` [PATCH 28/52] xfs_repair: support adding rtgroups to a filesystem Darrick J. Wong
2023-12-31 23:55 ` [PATCH 29/52] xfs_db: listify the definition of enum typnm Darrick J. Wong
2023-12-31 23:55 ` [PATCH 30/52] xfs_db: support dumping realtime superblocks Darrick J. Wong
2023-12-31 23:55 ` [PATCH 31/52] xfs_db: support changing the label and uuid of rt superblocks Darrick J. Wong
2023-12-31 23:55 ` [PATCH 32/52] xfs_db: listify the definition of dbm_t Darrick J. Wong
2023-12-31 23:56 ` [PATCH 33/52] xfs_db: implement check for rt superblocks Darrick J. Wong
2023-12-31 23:56 ` [PATCH 34/52] xfs_db: enable conversion of rt space units Darrick J. Wong
2023-12-31 23:56 ` [PATCH 35/52] xfs_db: report rtgroups via version command Darrick J. Wong
2023-12-31 23:56 ` [PATCH 36/52] xfs_db: metadump realtime devices Darrick J. Wong
2023-12-31 23:57 ` [PATCH 37/52] xfs_db: dump rt bitmap blocks Darrick J. Wong
2023-12-31 23:57 ` [PATCH 38/52] xfs_db: dump rt summary blocks Darrick J. Wong
2023-12-31 23:57 ` [PATCH 39/52] xfs_mdrestore: restore rt group superblocks to realtime device Darrick J. Wong
2023-12-31 23:57 ` [PATCH 40/52] xfs_io: support scrubbing rtgroup metadata Darrick J. Wong
2023-12-31 23:58 ` [PATCH 41/52] xfs_io: add a command to display allocation group information Darrick J. Wong
2023-12-31 23:58 ` [PATCH 42/52] xfs_io: add a command to display realtime " Darrick J. Wong
2023-12-31 23:58 ` [PATCH 43/52] xfs_io: display rt group in verbose bmap output Darrick J. Wong
2023-12-31 23:59 ` [PATCH 44/52] xfs_io: display rt group in verbose fsmap output Darrick J. Wong
2023-12-31 23:59 ` [PATCH 45/52] xfs_spaceman: report on realtime group health Darrick J. Wong
2023-12-31 23:59 ` [PATCH 46/52] xfs_scrub: scrub realtime allocation group metadata Darrick J. Wong
2023-12-31 23:59 ` [PATCH 47/52] xfs_scrub: call GETFSMAP for each rt group in parallel Darrick J. Wong
2023-12-31 19:53 ` [PATCHSET v2.0 07/17] xfsprogs: refactor btrees to support records in inode root Darrick J. Wong
2023-12-27 13:01 ` [PATCH 01/14] xfs: replace shouty XFS_BM{BT,DR} macros Darrick J. Wong
2023-12-27 13:01 ` [PATCH 02/14] xfs: refactor the allocation and freeing of incore inode fork btree roots Darrick J. Wong
2023-12-27 13:01 ` [PATCH 03/14] xfs: refactor creation of bmap " Darrick J. Wong
2023-12-27 13:02 ` [PATCH 04/14] xfs: fix a sloppy memory handling bug in xfs_iroot_realloc Darrick J. Wong
2023-12-27 13:02 ` [PATCH 05/14] xfs: hoist the code that moves the incore inode fork broot memory Darrick J. Wong
2023-12-27 13:02 ` [PATCH 06/14] xfs: move the zero records logic into xfs_bmap_broot_space_calc Darrick J. Wong
2023-12-27 13:02 ` [PATCH 07/14] xfs: rearrange xfs_iroot_realloc a bit Darrick J. Wong
2023-12-27 13:03 ` [PATCH 08/14] xfs: standardize the btree maxrecs function parameters Darrick J. Wong
2023-12-27 13:03 ` [PATCH 09/14] xfs: generalize the btree root reallocation function Darrick J. Wong
2023-12-27 13:03 ` [PATCH 10/14] xfs: support leaves in the incore btree root block in xfs_iroot_realloc Darrick J. Wong
2023-12-27 13:03 ` [PATCH 11/14] xfs: hoist the node iroot update code out of xfs_btree_new_iroot Darrick J. Wong
2023-12-27 13:04 ` [PATCH 12/14] xfs: hoist the node iroot update code out of xfs_btree_kill_iroot Darrick J. Wong
2023-12-27 13:04 ` [PATCH 13/14] xfs: support storing records in the inode core root Darrick J. Wong
2023-12-27 13:04 ` [PATCH 14/14] xfs: update btree keys correctly when _insrec splits an inode root block Darrick J. Wong
2023-12-31 19:53 ` [PATCHSET v2.0 08/17] xfsprogs: enable in-core block reservation for rt metadata Darrick J. Wong
2023-12-27 13:05 ` [PATCH 1/2] xfs: simplify xfs_ag_resv_free signature Darrick J. Wong
2023-12-27 13:05 ` [PATCH 2/2] xfs: allow inode-based btrees to reserve space in the data device Darrick J. Wong
2023-12-31 19:54 ` [PATCHSET v2.0 09/17] xfsprogs: extent free log intent cleanups Darrick J. Wong
2023-12-27 13:05 ` [PATCH 1/8] xfs: clean up extent free log intent item tracepoint callsites Darrick J. Wong
2023-12-27 13:05 ` [PATCH 2/8] xfs: convert "skip_discard" to a proper flags bitset Darrick J. Wong
2023-12-27 13:06 ` [PATCH 3/8] xfs: pass the fsbno to xfs_perag_intent_get Darrick J. Wong
2023-12-27 13:06 ` [PATCH 4/8] xfs: add a xefi_entry helper Darrick J. Wong
2023-12-27 13:06 ` [PATCH 5/8] xfs: reuse xfs_extent_free_cancel_item Darrick J. Wong
2023-12-27 13:06 ` [PATCH 6/8] xfs: remove duplicate asserts in xfs_defer_extent_free Darrick J. Wong
2023-12-27 13:07 ` [PATCH 7/8] xfs: remove xfs_defer_agfl_block Darrick J. Wong
2023-12-27 13:07 ` [PATCH 8/8] xfs: move xfs_extent_free_defer_add to xfs_extfree_item.c Darrick J. Wong
2023-12-31 19:54 ` [PATCHSET v2.0 10/17] xfsprogs: widen EFI format to support rt Darrick J. Wong
2023-12-27 13:07 ` [PATCH 1/3] xfs: support logging EFIs for realtime extents Darrick J. Wong
2023-12-27 13:07 ` [PATCH 2/3] xfs: support error injection when freeing rt extents Darrick J. Wong
2023-12-27 13:08 ` [PATCH 3/3] xfs_logprint: report realtime EFIs Darrick J. Wong
2023-12-31 19:54 ` [PATCHSET v2.0 11/17] xfsprogs: rmap log intent cleanups Darrick J. Wong
2023-12-27 13:08 ` [PATCH 1/9] xfs: attach rtgroup objects to btree cursors Darrick J. Wong
2023-12-27 13:08 ` [PATCH 2/9] xfs: give rmap btree cursor error tracepoints their own class Darrick J. Wong
2023-12-27 13:08 ` [PATCH 3/9] xfs: prepare rmap btree tracepoints for widening Darrick J. Wong
2023-12-27 13:09 ` [PATCH 4/9] xfs: clean up rmap log intent item tracepoint callsites Darrick J. Wong
2023-12-27 13:09 ` [PATCH 5/9] xfs: add a ri_entry helper Darrick J. Wong
2023-12-27 13:09 ` [PATCH 6/9] xfs: reuse xfs_rmap_update_cancel_item Darrick J. Wong
2023-12-27 13:09 ` [PATCH 7/9] xfs: don't bother calling xfs_rmap_finish_one_cleanup in xfs_rmap_finish_one Darrick J. Wong
2023-12-27 13:10 ` [PATCH 8/9] xfs: simplify usage of the rcur local variable " Darrick J. Wong
2023-12-27 13:10 ` [PATCH 9/9] xfs: move xfs_rmap_update_defer_add to xfs_rmap_item.c Darrick J. Wong
2023-12-31 19:54 ` [PATCHSET v2.0 12/17] xfsprogs: realtime reverse-mapping support Darrick J. Wong
2023-12-27 13:10 ` [PATCH 01/47] xfs: simplify the xfs_rmap_{alloc,free}_extent calling conventions Darrick J. Wong
2023-12-27 13:11 ` [PATCH 02/47] xfs: introduce realtime rmap btree definitions Darrick J. Wong
2023-12-27 13:11 ` [PATCH 03/47] xfs: define the on-disk realtime rmap btree format Darrick J. Wong
2023-12-27 13:11 ` [PATCH 04/47] xfs: realtime rmap btree transaction reservations Darrick J. Wong
2023-12-27 13:11 ` [PATCH 05/47] xfs: add realtime rmap btree operations Darrick J. Wong
2023-12-27 13:12 ` [PATCH 06/47] xfs: prepare rmap functions to deal with rtrmapbt Darrick J. Wong
2023-12-27 13:12 ` [PATCH 07/47] xfs: add a realtime flag to the rmap update log redo items Darrick J. Wong
2023-12-27 13:12 ` [PATCH 08/47] xfs: add realtime reverse map inode to metadata directory Darrick J. Wong
2023-12-27 13:12 ` [PATCH 09/47] xfs: add metadata reservations for realtime rmap btrees Darrick J. Wong
2023-12-27 13:13 ` [PATCH 10/47] xfs: wire up a new inode fork type for the realtime rmap Darrick J. Wong
2023-12-27 13:13 ` [PATCH 11/47] xfs: allow inodes with zero extents but nonzero nblocks Darrick J. Wong
2023-12-27 13:13 ` [PATCH 12/47] xfs: use realtime EFI to free extents when realtime rmap is enabled Darrick J. Wong
2023-12-27 13:13 ` [PATCH 13/47] xfs: wire up rmap map and unmap to the realtime rmapbt Darrick J. Wong
2023-12-27 13:14 ` [PATCH 14/47] xfs: create routine to allocate and initialize a realtime rmap btree inode Darrick J. Wong
2023-12-27 13:14 ` [PATCH 15/47] xfs: report realtime rmap btree corruption errors to the health system Darrick J. Wong
2023-12-27 13:14 ` [PATCH 16/47] xfs: allow queued realtime intents to drain before scrubbing Darrick J. Wong
2023-12-27 13:14 ` [PATCH 17/47] xfs: scrub the realtime rmapbt Darrick J. Wong
2023-12-27 13:15 ` [PATCH 18/47] xfs: scrub the metadir path of rt rmap btree files Darrick J. Wong
2023-12-27 13:15 ` [PATCH 19/47] xfs: online repair of the realtime rmap btree Darrick J. Wong
2023-12-27 13:15 ` [PATCH 20/47] xfs: create a shadow rmap btree during realtime rmap repair Darrick J. Wong
2023-12-27 13:15 ` [PATCH 21/47] xfs: hook live realtime rmap operations during a repair operation Darrick J. Wong
2023-12-27 13:16 ` [PATCH 22/47] xfs_db: display the realtime rmap btree contents Darrick J. Wong
2023-12-27 13:16 ` [PATCH 23/47] xfs_db: support the realtime rmapbt Darrick J. Wong
2023-12-27 13:16 ` [PATCH 24/47] xfs_db: support rudimentary checks of the rtrmap btree Darrick J. Wong
2023-12-27 13:17 ` [PATCH 25/47] xfs_db: copy the realtime rmap btree Darrick J. Wong
2023-12-27 13:17 ` [PATCH 26/47] xfs_db: make fsmap query the realtime reverse mapping tree Darrick J. Wong
2023-12-27 13:17 ` [PATCH 27/47] xfs_io: support scrubbing rtgroup metadata paths Darrick J. Wong
2023-12-27 13:17 ` [PATCH 28/47] libfrog: enable scrubbng of the realtime rmap Darrick J. Wong
2023-12-27 13:18 ` [PATCH 29/47] xfs_scrub: check rtrmapbt metadata directory connections Darrick J. Wong
2023-12-27 13:18 ` [PATCH 30/47] xfs_scrub: retest metadata across scrub groups after a repair Darrick J. Wong
2023-12-27 13:18 ` [PATCH 31/47] xfs_spaceman: report health status of the realtime rmap btree Darrick J. Wong
2023-12-27 13:18 ` [PATCH 32/47] libxfs: dirty buffers should be marked uptodate too Darrick J. Wong
2023-12-27 13:19 ` [PATCH 33/47] xfs_repair: flag suspect long-format btree blocks Darrick J. Wong
2023-12-27 13:19 ` [PATCH 34/47] xfs_repair: use realtime rmap btree data to check block types Darrick J. Wong
2023-12-27 13:19 ` [PATCH 35/47] xfs_repair: create a new set of incore rmap information for rt groups Darrick J. Wong
2023-12-27 13:19 ` [PATCH 36/47] xfs_repair: collect relatime reverse-mapping data for refcount/rmap tree rebuilding Darrick J. Wong
2023-12-27 13:20 ` [PATCH 37/47] xfs_repair: refactor realtime inode check Darrick J. Wong
2023-12-27 13:20 ` [PATCH 38/47] xfs_repair: find and mark the rtrmapbt inodes Darrick J. Wong
2023-12-27 13:20 ` [PATCH 39/47] xfs_repair: check existing realtime rmapbt entries against observed rmaps Darrick J. Wong
2023-12-27 13:20 ` [PATCH 40/47] xfs_repair: always check realtime file mappings against incore info Darrick J. Wong
2023-12-27 13:21 ` [PATCH 41/47] xfs_repair: rebuild the realtime rmap btree Darrick J. Wong
2023-12-27 13:21 ` [PATCH 42/47] xfs_repair: check for global free space concerns with default btree slack levels Darrick J. Wong
2023-12-27 13:21 ` [PATCH 43/47] xfs_repair: rebuild the bmap btree for realtime files Darrick J. Wong
2023-12-27 13:21 ` [PATCH 44/47] xfs_repair: reserve per-AG space while rebuilding rt metadata Darrick J. Wong
2023-12-27 13:22 ` [PATCH 45/47] xfs_repair: allow sysadmins to add realtime reverse mapping indexes Darrick J. Wong
2023-12-27 13:22 ` [PATCH 46/47] xfs_logprint: report realtime RUIs Darrick J. Wong
2023-12-27 13:22 ` [PATCH 47/47] mkfs: create the realtime rmap inode Darrick J. Wong
2023-12-31 19:55 ` [PATCHSET v2.0 13/17] xfsprogs: file write utility refactoring Darrick J. Wong
2023-12-27 13:23 ` [PATCH 1/4] libxfs: resync libxfs_alloc_file_space interface with the kernel Darrick J. Wong
2023-12-27 13:23 ` [PATCH 2/4] mkfs: use libxfs_alloc_file_space for rtinit Darrick J. Wong
2023-12-27 13:23 ` [PATCH 3/4] xfs_repair: use libxfs_alloc_file_space to reallocate rt metadata Darrick J. Wong
2023-12-27 13:23 ` [PATCH 4/4] mkfs: use file write helper to populate files Darrick J. Wong
2023-12-31 19:55 ` [PATCHSET v2.0 14/17] xfsprogs: refcount log intent cleanups Darrick J. Wong
2023-12-27 13:24 ` [PATCH 1/9] xfs: give refcount btree cursor error tracepoints their own class Darrick J. Wong
2023-12-27 13:24 ` [PATCH 2/9] xfs: create specialized classes for refcount tracepoints Darrick J. Wong
2023-12-27 13:24 ` [PATCH 3/9] xfs: prepare refcount btree tracepoints for widening Darrick J. Wong
2023-12-27 13:24 ` [PATCH 4/9] xfs: clean up refcount log intent item tracepoint callsites Darrick J. Wong
2023-12-27 13:25 ` [PATCH 5/9] xfs: add a ci_entry helper Darrick J. Wong
2023-12-27 13:25 ` [PATCH 6/9] xfs: reuse xfs_refcount_update_cancel_item Darrick J. Wong
2023-12-27 13:25 ` [PATCH 7/9] xfs: don't bother calling xfs_refcount_finish_one_cleanup in xfs_refcount_finish_one Darrick J. Wong
2023-12-27 13:25 ` [PATCH 8/9] xfs: simplify usage of the rcur local variable " Darrick J. Wong
2023-12-27 13:26 ` [PATCH 9/9] xfs: move xfs_refcount_update_defer_add to xfs_refcount_item.c Darrick J. Wong
2023-12-31 19:55 ` [PATCHSET v2.0 15/17] xfsprogs: reflink on the realtime device Darrick J. Wong
2023-12-27 13:26 ` [PATCH 01/42] xfs: introduce realtime refcount btree definitions Darrick J. Wong
2023-12-27 13:26 ` [PATCH 02/42] xfs: namespace the maximum length/refcount symbols Darrick J. Wong
2023-12-27 13:26 ` [PATCH 03/42] xfs: define the on-disk realtime refcount btree format Darrick J. Wong
2023-12-27 13:27 ` [PATCH 04/42] xfs: realtime refcount btree transaction reservations Darrick J. Wong
2023-12-27 13:27 ` [PATCH 05/42] xfs: add realtime refcount btree operations Darrick J. Wong
2023-12-27 13:27 ` [PATCH 06/42] xfs: prepare refcount functions to deal with rtrefcountbt Darrick J. Wong
2023-12-27 13:27 ` [PATCH 07/42] xfs: add a realtime flag to the refcount update log redo items Darrick J. Wong
2023-12-27 13:28 ` [PATCH 08/42] xfs: add realtime refcount btree inode to metadata directory Darrick J. Wong
2023-12-27 13:28 ` [PATCH 09/42] xfs: add metadata reservations for realtime refcount btree Darrick J. Wong
2023-12-27 13:28 ` [PATCH 10/42] xfs: wire up a new inode fork type for the realtime refcount Darrick J. Wong
2023-12-27 13:29 ` [PATCH 11/42] xfs: wire up realtime refcount btree cursors Darrick J. Wong
2023-12-27 13:29 ` [PATCH 12/42] xfs: create routine to allocate and initialize a realtime refcount btree inode Darrick J. Wong
2023-12-27 13:29 ` [PATCH 13/42] xfs: update rmap to allow cow staging extents in the rt rmap Darrick J. Wong
2023-12-27 13:29 ` [PATCH 14/42] xfs: compute rtrmap btree max levels when reflink enabled Darrick J. Wong
2023-12-27 13:30 ` [PATCH 15/42] xfs: allow inodes to have the realtime and reflink flags Darrick J. Wong
2023-12-27 13:30 ` [PATCH 16/42] xfs: refcover CoW leftovers in the realtime volume Darrick J. Wong
2023-12-27 13:30 ` [PATCH 17/42] xfs: fix xfs_get_extsz_hint behavior with realtime alwayscow files Darrick J. Wong
2023-12-27 13:30 ` [PATCH 18/42] xfs: apply rt extent alignment constraints to CoW extsize hint Darrick J. Wong
2023-12-27 13:31 ` [PATCH 19/42] xfs: enable extent size hints for CoW operations Darrick J. Wong
2023-12-27 13:31 ` [PATCH 20/42] xfs: report realtime refcount btree corruption errors to the health system Darrick J. Wong
2023-12-27 13:31 ` [PATCH 21/42] xfs: scrub the realtime refcount btree Darrick J. Wong
2023-12-27 13:31 ` [PATCH 22/42] xfs: scrub the metadir path of rt refcount btree files Darrick J. Wong
2023-12-27 13:32 ` [PATCH 23/42] libfrog: enable scrubbing of the realtime refcount data Darrick J. Wong
2023-12-27 13:32 ` [PATCH 24/42] xfs_db: display the realtime refcount btree contents Darrick J. Wong
2023-12-27 13:32 ` [PATCH 25/42] xfs_db: support the realtime refcountbt Darrick J. Wong
2023-12-27 13:32 ` [PATCH 26/42] xfs_db: widen block type mask to 64 bits Darrick J. Wong
2023-12-27 13:33 ` [PATCH 27/42] xfs_db: support rudimentary checks of the rtrefcount btree Darrick J. Wong
2023-12-27 13:33 ` [PATCH 28/42] xfs_db: copy the realtime refcount btree Darrick J. Wong
2023-12-27 13:33 ` [PATCH 29/42] xfs_spaceman: report health of " Darrick J. Wong
2023-12-27 13:33 ` [PATCH 30/42] xfs_repair: allow CoW staging extents in the realtime rmap records Darrick J. Wong
2023-12-27 13:34 ` [PATCH 31/42] xfs_repair: use realtime refcount btree data to check block types Darrick J. Wong
2023-12-27 13:34 ` [PATCH 32/42] xfs_repair: find and mark the rtrefcountbt inode Darrick J. Wong
2023-12-27 13:34 ` [PATCH 33/42] xfs_repair: compute refcount data for the realtime groups Darrick J. Wong
2023-12-27 13:35 ` [PATCH 34/42] xfs_repair: check existing realtime refcountbt entries against observed refcounts Darrick J. Wong
2023-12-27 13:35 ` [PATCH 35/42] xfs_repair: reject unwritten shared extents Darrick J. Wong
2023-12-27 13:35 ` [PATCH 36/42] xfs_repair: rebuild the realtime refcount btree Darrick J. Wong
2023-12-27 13:35 ` [PATCH 37/42] xfs_repair: allow realtime files to have the reflink flag set Darrick J. Wong
2023-12-27 13:36 ` [PATCH 38/42] xfs_repair: validate CoW extent size hint on rtinherit directories Darrick J. Wong
2023-12-27 13:36 ` [PATCH 39/42] xfs_repair: allow sysadmins to add realtime reflink Darrick J. Wong
2023-12-27 13:36 ` [PATCH 40/42] xfs_logprint: report realtime CUIs Darrick J. Wong
2023-12-27 13:36 ` [PATCH 41/42] mkfs: validate CoW extent size hint when rtinherit is set Darrick J. Wong
2023-12-27 13:37 ` [PATCH 42/42] mkfs: enable reflink on the realtime device Darrick J. Wong
2023-12-31 19:55 ` [PATCHSET v2.0 16/17] xfsprogs: reflink with large realtime extents Darrick J. Wong
2023-12-27 13:37 ` [PATCH 1/3] xfs: enable extent size hints for CoW when rtextsize > 1 Darrick J. Wong
2023-12-27 13:37 ` [PATCH 2/3] xfs: fix integer overflow when validating extent size hints Darrick J. Wong
2023-12-27 13:37 ` [PATCH 3/3] mkfs: enable reflink with realtime extent sizes > 1 Darrick J. Wong
2023-12-31 19:56 ` [PATCHSET v2.0 17/17] xfsprogs: enable quota for realtime voluems Darrick J. Wong
2023-12-27 13:38 ` [PATCH 1/1] xfs_quota: report warning limits for realtime space quotas Darrick J. Wong
2023-12-31 20:00 ` [PATCHSET v2.0 1/9] fstests: test XFS metadata directories Darrick J. Wong
2023-12-27 13:50 ` [PATCH 01/11] xfs/122: fix metadirino Darrick J. Wong
2023-12-27 13:50 ` [PATCH 02/11] various: fix finding metadata inode numbers when metadir is enabled Darrick J. Wong
2023-12-27 13:50 ` [PATCH 03/11] xfs/{030,033,178}: forcibly disable metadata directory trees Darrick J. Wong
2023-12-27 13:50 ` [PATCH 04/11] common/repair: patch up repair sb inode value complaints Darrick J. Wong
2023-12-27 13:51 ` [PATCH 05/11] xfs/206: update for metadata directory support Darrick J. Wong
2023-12-27 13:51 ` [PATCH 06/11] xfs/{050,144,153,299,330}: update quota reports to handle metadir trees Darrick J. Wong
2023-12-27 13:51 ` [PATCH 07/11] xfs/856: add metadir upgrade to test matrix Darrick J. Wong
2023-12-27 13:51 ` [PATCH 08/11] xfs/509: adjust inumbers accounting for metadata directories Darrick J. Wong
2023-12-27 13:52 ` [PATCH 09/11] xfs: create fuzz tests " Darrick J. Wong
2023-12-27 13:52 ` [PATCH 10/11] xfs: baseline golden output for metadata directory fuzz tests Darrick J. Wong
2023-12-27 13:52 ` [PATCH 11/11] xfs: test metapath repairs Darrick J. Wong
2023-12-31 20:00 ` [PATCHSET v2.0 2/9] xfsprogs: shard the realtime section Darrick J. Wong
2023-12-27 13:53 ` [PATCH 01/17] common/populate: refactor caching of metadumps to a helper Darrick J. Wong
2023-12-27 13:53 ` [PATCH 02/17] common/xfs: wipe external logs during mdrestore operations Darrick J. Wong
2023-12-27 13:53 ` [PATCH 03/17] common/ext4: reformat " Darrick J. Wong
2023-12-27 13:53 ` [PATCH 04/17] xfs: use metadump v2 format by default Darrick J. Wong
2023-12-27 13:54 ` [PATCH 05/17] common/xfs: capture external logs during metadump/mdrestore Darrick J. Wong
2023-12-27 13:54 ` [PATCH 06/17] xfs/122: update for rtgroups Darrick J. Wong
2023-12-27 13:54 ` [PATCH 07/17] punch-alternating: detect xfs realtime files with large allocation units Darrick J. Wong
2023-12-27 13:54 ` [PATCH 08/17] xfs/206: update mkfs filtering for rt groups feature Darrick J. Wong
2023-12-27 13:55 ` [PATCH 09/17] common: pass the realtime device to xfs_db when possible Darrick J. Wong
2023-12-27 13:55 ` [PATCH 10/17] common: filter rtgroups when we're disabling metadir Darrick J. Wong
2023-12-27 13:55 ` [PATCH 11/17] xfs/185: update for rtgroups Darrick J. Wong
2023-12-27 13:55 ` [PATCH 12/17] xfs/449: update test to know about xfs_db -R Darrick J. Wong
2023-12-27 13:56 ` [PATCH 13/17] xfs/122: update for rtbitmap headers Darrick J. Wong
2023-12-27 13:56 ` [PATCH 14/17] xfs/122: udpate test to pick up rtword/suminfo ondisk unions Darrick J. Wong
2023-12-27 13:56 ` [PATCH 15/17] xfs/27[46],xfs/556: fix tests to deal with rtgroups output in bmap/fsmap commands Darrick J. Wong
2023-12-27 13:56 ` [PATCH 16/17] common/xfs: capture realtime devices during metadump/mdrestore Darrick J. Wong
2023-12-27 13:57 ` [PATCH 17/17] common/fuzzy: adapt the scrub stress tests to support rtgroups Darrick J. Wong
2023-12-31 20:00 ` [PATCHSET v2.0 3/9] fstests: enable FITRIM for the realtime section Darrick J. Wong
2023-12-27 13:57 ` [PATCH 1/2] xfs: refactor statfs field extraction Darrick J. Wong
2023-12-27 13:57 ` [PATCH 2/2] common/xfs: FITRIM now supports realtime volumes Darrick J. Wong
2023-12-31 20:00 ` [PATCHSET v2.0 4/9] fstests: fixes for realtime rmap Darrick J. Wong
2023-12-27 13:57 ` [PATCH 01/13] xfs: fix tests that try to access the realtime rmap inode Darrick J. Wong
2023-12-27 13:58 ` [PATCH 02/13] fuzz: for fuzzing the rtrmapbt, find the path to the rt rmap btree file Darrick J. Wong
2023-12-27 13:58 ` [PATCH 03/13] xfs: race fsstress with realtime rmap btree scrub and repair Darrick J. Wong
2023-12-27 13:58 ` [PATCH 04/13] xfs/856: add rtrmapbt upgrade to test matrix Darrick J. Wong
2023-12-27 13:59 ` [PATCH 05/13] xfs/122: update for rtgroups-based realtime rmap btrees Darrick J. Wong
2023-12-27 13:59 ` [PATCH 06/13] xfs: fix various problems with fsmap detecting the data device Darrick J. Wong
2023-12-27 13:59 ` [PATCH 07/13] xfs/341: update test for rtgroup-based rmap Darrick J. Wong
2023-12-27 13:59 ` [PATCH 08/13] xfs/3{43,32}: adapt tests for rt extent size greater than 1 Darrick J. Wong
2023-12-27 14:00 ` [PATCH 09/13] xfs: skip tests if formatting small filesystem fails Darrick J. Wong
2023-12-27 14:00 ` [PATCH 10/13] xfs/443: use file allocation unit, not dbsize Darrick J. Wong
2023-12-27 14:00 ` [PATCH 11/13] populate: adjust rtrmap calculations for rtgroups Darrick J. Wong
2023-12-27 14:00 ` [PATCH 12/13] populate: check that we created a realtime rmap btree of the given height Darrick J. Wong
2023-12-27 14:01 ` [PATCH 13/13] fuzzy: create missing fuzz tests for rt rmap btrees Darrick J. Wong
2023-12-31 20:01 ` [PATCHSET v2.0 5/9] fstests: establish baseline for realtime rmap fuzz tests Darrick J. Wong
2023-12-27 14:01 ` [PATCH 1/1] fuzzy: create known output for rt rmap btree " Darrick J. Wong
2023-12-31 20:01 ` [PATCHSET v2.0 6/9] fstests: reflink on the realtime device Darrick J. Wong
2023-12-27 14:01 ` [PATCH 1/9] xfs/122: update fields for realtime reflink Darrick J. Wong
2023-12-27 14:01 ` [PATCH 2/9] common/populate: create realtime refcount btree Darrick J. Wong
2023-12-27 14:02 ` [PATCH 3/9] xfs: create fuzz tests for the " Darrick J. Wong
2023-12-27 14:02 ` [PATCH 4/9] xfs/27[24]: adapt for checking files on the realtime volume Darrick J. Wong
2023-12-27 14:02 ` [PATCH 5/9] xfs: race fsstress with realtime refcount btree scrub and repair Darrick J. Wong
2023-12-27 14:02 ` [PATCH 6/9] xfs: remove xfs/131 now that we allow reflink on realtime volumes Darrick J. Wong
2023-12-27 14:03 ` [PATCH 7/9] xfs/856: add rtreflink upgrade to test matrix Darrick J. Wong
2023-12-27 14:03 ` [PATCH 8/9] generic/331,xfs/240: support files that skip delayed allocation Darrick J. Wong
2023-12-27 14:03 ` [PATCH 9/9] common/xfs: fix _xfs_get_file_block_size when rtinherit is set and no rt section Darrick J. Wong
2023-12-31 20:01 ` [PATCHSET v2.0 7/9] fstests: establish baseline for realtime reflink fuzz tests Darrick J. Wong
2023-12-27 14:03 ` [PATCH 1/1] xfs: baseline golden output for rt refcount btree " Darrick J. Wong
2023-12-31 20:01 ` [PATCHSET v2.0 8/9] fstests: reflink with large realtime extents Darrick J. Wong
2023-12-27 14:04 ` [PATCH 1/5] xfs: make sure that CoW will write around when rextsize > 1 Darrick J. Wong
2023-12-27 14:04 ` [PATCH 2/5] xfs: skip cowextsize hint fragmentation tests on realtime volumes Darrick J. Wong
2023-12-27 14:04 ` [PATCH 3/5] misc: add more congruent oplen testing Darrick J. Wong
2023-12-27 14:05 ` [PATCH 4/5] xfs: test COWing entire rt extents Darrick J. Wong
2023-12-27 14:05 ` [PATCH 5/5] generic/303: avoid test failures on weird rt extent sizes Darrick J. Wong
2023-12-31 20:02 ` [PATCHSET v2.0 9/9] fstests: functional tests for rt quota Darrick J. Wong
2023-12-27 14:05 ` [PATCH 1/3] common: enable testing of realtime quota when supported Darrick J. Wong
2023-12-27 14:05 ` [PATCH 2/3] xfs: fix quota tests to adapt to realtime quota Darrick J. Wong
2023-12-27 14:06 ` [PATCH 3/3] xfs: regression testing of quota on the realtime device Darrick J. Wong
2023-12-31 20:03 ` [PATCHSET v2.0 1/4] xfs-documentation: document metadata directories Darrick J. Wong
2023-12-27 14:08 ` [PATCH 1/1] design: document the changes required to handle " Darrick J. Wong
2023-12-31 20:03 ` [PATCHSET v2.0 2/4] xfs-documentation: shard the realtime section Darrick J. Wong
2023-12-27 14:08 ` [PATCH 1/2] design: move discussion of realtime volumes to a separate section Darrick J. Wong
2023-12-27 14:08 ` [PATCH 2/2] design: document realtime groups Darrick J. Wong
2023-12-31 20:04 ` [PATCHSET v2.0 3/4] xfs-documentation: realtime reverse-mapping support Darrick J. Wong
2023-12-27 14:08 ` [PATCH 1/1] design: document the revisions to the realtime rmap formats Darrick J. Wong
2023-12-31 20:04 ` [PATCHSET v2.0 4/4] xfs-documentation: reflink on the realtime device Darrick J. Wong
2023-12-27 14:09 ` [PATCH 1/1] design: document changes for the realtime refcount btree 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=170404850446.1764998.15564224276753988976.stgit@frogsfrogsfrogs \
--to=djwong@kernel.org \
--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).