From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org
Cc: linux-xfs@vger.kernel.org
Subject: [PATCH 11/11] xfs: report XFS_IS_CORRUPT errors to the health system
Date: Sun, 31 Dec 2023 12:12:31 -0800 [thread overview]
Message-ID: <170404828458.1748329.17550485294904147495.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <170404828253.1748329.6550106654194720629.stgit@frogsfrogsfrogs>
From: Darrick J. Wong <djwong@kernel.org>
Whenever we encounter XFS_IS_CORRUPT failures, we should report that to
the health monitoring system for later reporting.
I started with this semantic patch and massaged everything until it
built:
@@
expression mp, test;
@@
- if (XFS_IS_CORRUPT(mp, test)) return -EFSCORRUPTED;
+ if (XFS_IS_CORRUPT(mp, test)) { xfs_btree_mark_sick(cur); return -EFSCORRUPTED; }
@@
expression mp, test;
identifier label, error;
@@
- if (XFS_IS_CORRUPT(mp, test)) { error = -EFSCORRUPTED; goto label; }
+ if (XFS_IS_CORRUPT(mp, test)) { xfs_btree_mark_sick(cur); error = -EFSCORRUPTED; goto label; }
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
fs/xfs/libxfs/xfs_ag.c | 4 +-
fs/xfs/libxfs/xfs_alloc.c | 97 +++++++++++++++++++++++++++++++++------
fs/xfs/libxfs/xfs_attr_remote.c | 8 ++-
fs/xfs/libxfs/xfs_bmap.c | 94 ++++++++++++++++++++++++++++++++++----
fs/xfs/libxfs/xfs_btree.c | 14 +++++-
fs/xfs/libxfs/xfs_ialloc.c | 52 +++++++++++++++++----
fs/xfs/libxfs/xfs_refcount.c | 37 ++++++++++++++-
fs/xfs/libxfs/xfs_rmap.c | 77 +++++++++++++++++++++++++++++--
fs/xfs/scrub/refcount_repair.c | 9 +++-
fs/xfs/xfs_attr_list.c | 9 +++-
fs/xfs/xfs_dir2_readdir.c | 6 ++
fs/xfs/xfs_discard.c | 2 +
fs/xfs/xfs_iwalk.c | 5 ++
13 files changed, 364 insertions(+), 50 deletions(-)
diff --git a/fs/xfs/libxfs/xfs_ag.c b/fs/xfs/libxfs/xfs_ag.c
index b857fc54562a7..ccad54d1dadaf 100644
--- a/fs/xfs/libxfs/xfs_ag.c
+++ b/fs/xfs/libxfs/xfs_ag.c
@@ -931,8 +931,10 @@ xfs_ag_shrink_space(
agf = agfbp->b_addr;
aglen = be32_to_cpu(agi->agi_length);
/* some extra paranoid checks before we shrink the ag */
- if (XFS_IS_CORRUPT(mp, agf->agf_length != agi->agi_length))
+ if (XFS_IS_CORRUPT(mp, agf->agf_length != agi->agi_length)) {
+ xfs_ag_mark_sick(pag, XFS_SICK_AG_AGF);
return -EFSCORRUPTED;
+ }
if (delta >= aglen)
return -EINVAL;
diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
index 2464b64b1cb4e..ac31b62e70177 100644
--- a/fs/xfs/libxfs/xfs_alloc.c
+++ b/fs/xfs/libxfs/xfs_alloc.c
@@ -499,14 +499,18 @@ xfs_alloc_fixup_trees(
if (XFS_IS_CORRUPT(mp,
i != 1 ||
nfbno1 != fbno ||
- nflen1 != flen))
+ nflen1 != flen)) {
+ xfs_btree_mark_sick(cnt_cur);
return -EFSCORRUPTED;
+ }
#endif
} else {
if ((error = xfs_alloc_lookup_eq(cnt_cur, fbno, flen, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
return -EFSCORRUPTED;
+ }
}
/*
* Look up the record in the by-block tree if necessary.
@@ -518,14 +522,18 @@ xfs_alloc_fixup_trees(
if (XFS_IS_CORRUPT(mp,
i != 1 ||
nfbno1 != fbno ||
- nflen1 != flen))
+ nflen1 != flen)) {
+ xfs_btree_mark_sick(bno_cur);
return -EFSCORRUPTED;
+ }
#endif
} else {
if ((error = xfs_alloc_lookup_eq(bno_cur, fbno, flen, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
return -EFSCORRUPTED;
+ }
}
#ifdef DEBUG
@@ -538,8 +546,10 @@ xfs_alloc_fixup_trees(
if (XFS_IS_CORRUPT(mp,
bnoblock->bb_numrecs !=
- cntblock->bb_numrecs))
+ cntblock->bb_numrecs)) {
+ xfs_btree_mark_sick(bno_cur);
return -EFSCORRUPTED;
+ }
}
#endif
@@ -569,30 +579,40 @@ xfs_alloc_fixup_trees(
*/
if ((error = xfs_btree_delete(cnt_cur, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
return -EFSCORRUPTED;
+ }
/*
* Add new by-size btree entry(s).
*/
if (nfbno1 != NULLAGBLOCK) {
if ((error = xfs_alloc_lookup_eq(cnt_cur, nfbno1, nflen1, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 0))
+ if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(cnt_cur);
return -EFSCORRUPTED;
+ }
if ((error = xfs_btree_insert(cnt_cur, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
return -EFSCORRUPTED;
+ }
}
if (nfbno2 != NULLAGBLOCK) {
if ((error = xfs_alloc_lookup_eq(cnt_cur, nfbno2, nflen2, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 0))
+ if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(cnt_cur);
return -EFSCORRUPTED;
+ }
if ((error = xfs_btree_insert(cnt_cur, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
return -EFSCORRUPTED;
+ }
}
/*
* Fix up the by-block btree entry(s).
@@ -603,8 +623,10 @@ xfs_alloc_fixup_trees(
*/
if ((error = xfs_btree_delete(bno_cur, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
return -EFSCORRUPTED;
+ }
} else {
/*
* Update the by-block entry to start later|be shorter.
@@ -618,12 +640,16 @@ xfs_alloc_fixup_trees(
*/
if ((error = xfs_alloc_lookup_eq(bno_cur, nfbno2, nflen2, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 0))
+ if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(bno_cur);
return -EFSCORRUPTED;
+ }
if ((error = xfs_btree_insert(bno_cur, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
return -EFSCORRUPTED;
+ }
}
return 0;
}
@@ -896,8 +922,10 @@ xfs_alloc_cur_check(
error = xfs_alloc_get_rec(cur, &bno, &len, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(args->mp, i != 1))
+ if (XFS_IS_CORRUPT(args->mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
/*
* Check minlen and deactivate a cntbt cursor if out of acceptable size
@@ -1103,6 +1131,7 @@ xfs_alloc_ag_vextent_small(
if (error)
goto error;
if (XFS_IS_CORRUPT(args->mp, i != 1)) {
+ xfs_btree_mark_sick(ccur);
error = -EFSCORRUPTED;
goto error;
}
@@ -1137,6 +1166,7 @@ xfs_alloc_ag_vextent_small(
*fbnop = args->agbno = fbno;
*flenp = args->len = 1;
if (XFS_IS_CORRUPT(args->mp, fbno >= be32_to_cpu(agf->agf_length))) {
+ xfs_btree_mark_sick(ccur);
error = -EFSCORRUPTED;
goto error;
}
@@ -1223,6 +1253,7 @@ xfs_alloc_ag_vextent_exact(
if (error)
goto error0;
if (XFS_IS_CORRUPT(args->mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1502,8 +1533,10 @@ xfs_alloc_ag_vextent_lastblock(
error = xfs_alloc_get_rec(acur->cnt, bno, len, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(args->mp, i != 1))
+ if (XFS_IS_CORRUPT(args->mp, i != 1)) {
+ xfs_btree_mark_sick(acur->cnt);
return -EFSCORRUPTED;
+ }
if (*len >= args->minlen)
break;
error = xfs_btree_increment(acur->cnt, 0, &i);
@@ -1715,6 +1748,7 @@ xfs_alloc_ag_vextent_size(
if (error)
goto error0;
if (XFS_IS_CORRUPT(args->mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1761,6 +1795,7 @@ xfs_alloc_ag_vextent_size(
rlen != 0 &&
(rlen > flen ||
rbno + rlen > fbno + flen))) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1783,6 +1818,7 @@ xfs_alloc_ag_vextent_size(
&i)))
goto error0;
if (XFS_IS_CORRUPT(args->mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1795,6 +1831,7 @@ xfs_alloc_ag_vextent_size(
rlen != 0 &&
(rlen > flen ||
rbno + rlen > fbno + flen))) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1811,6 +1848,7 @@ xfs_alloc_ag_vextent_size(
&i)))
goto error0;
if (XFS_IS_CORRUPT(args->mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1849,6 +1887,7 @@ xfs_alloc_ag_vextent_size(
rlen = args->len;
if (XFS_IS_CORRUPT(args->mp, rlen > flen)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1868,6 +1907,7 @@ xfs_alloc_ag_vextent_size(
if (XFS_IS_CORRUPT(args->mp,
args->agbno + args->len >
be32_to_cpu(agf->agf_length))) {
+ xfs_ag_mark_sick(args->pag, XFS_SICK_AG_BNOBT);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1943,6 +1983,7 @@ xfs_free_ag_extent(
if ((error = xfs_alloc_get_rec(bno_cur, <bno, <len, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1958,6 +1999,7 @@ xfs_free_ag_extent(
* Very bad.
*/
if (XFS_IS_CORRUPT(mp, ltbno + ltlen > bno)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1976,6 +2018,7 @@ xfs_free_ag_extent(
if ((error = xfs_alloc_get_rec(bno_cur, >bno, >len, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1991,6 +2034,7 @@ xfs_free_ag_extent(
* Very bad.
*/
if (XFS_IS_CORRUPT(mp, bno + len > gtbno)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2011,12 +2055,14 @@ xfs_free_ag_extent(
if ((error = xfs_alloc_lookup_eq(cnt_cur, ltbno, ltlen, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
if ((error = xfs_btree_delete(cnt_cur, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2026,12 +2072,14 @@ xfs_free_ag_extent(
if ((error = xfs_alloc_lookup_eq(cnt_cur, gtbno, gtlen, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
if ((error = xfs_btree_delete(cnt_cur, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2041,6 +2089,7 @@ xfs_free_ag_extent(
if ((error = xfs_btree_delete(bno_cur, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2050,6 +2099,7 @@ xfs_free_ag_extent(
if ((error = xfs_btree_decrement(bno_cur, 0, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2069,6 +2119,7 @@ xfs_free_ag_extent(
i != 1 ||
xxbno != ltbno ||
xxlen != ltlen)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2093,12 +2144,14 @@ xfs_free_ag_extent(
if ((error = xfs_alloc_lookup_eq(cnt_cur, ltbno, ltlen, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
if ((error = xfs_btree_delete(cnt_cur, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2109,6 +2162,7 @@ xfs_free_ag_extent(
if ((error = xfs_btree_decrement(bno_cur, 0, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2128,12 +2182,14 @@ xfs_free_ag_extent(
if ((error = xfs_alloc_lookup_eq(cnt_cur, gtbno, gtlen, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
if ((error = xfs_btree_delete(cnt_cur, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2156,6 +2212,7 @@ xfs_free_ag_extent(
if ((error = xfs_btree_insert(bno_cur, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bno_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2168,12 +2225,14 @@ xfs_free_ag_extent(
if ((error = xfs_alloc_lookup_eq(cnt_cur, nbno, nlen, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
if ((error = xfs_btree_insert(cnt_cur, &i)))
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cnt_cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -3903,17 +3962,23 @@ __xfs_free_extent(
return -EIO;
error = xfs_free_extent_fix_freelist(tp, pag, &agbp);
- if (error)
+ if (error) {
+ if (xfs_metadata_is_sick(error))
+ xfs_ag_mark_sick(pag, XFS_SICK_AG_BNOBT);
return error;
+ }
+
agf = agbp->b_addr;
if (XFS_IS_CORRUPT(mp, agbno >= mp->m_sb.sb_agblocks)) {
+ xfs_ag_mark_sick(pag, XFS_SICK_AG_BNOBT);
error = -EFSCORRUPTED;
goto err_release;
}
/* validate the extent size is legal now we have the agf locked */
if (XFS_IS_CORRUPT(mp, agbno + len > be32_to_cpu(agf->agf_length))) {
+ xfs_ag_mark_sick(pag, XFS_SICK_AG_BNOBT);
error = -EFSCORRUPTED;
goto err_release;
}
diff --git a/fs/xfs/libxfs/xfs_attr_remote.c b/fs/xfs/libxfs/xfs_attr_remote.c
index b18a3cf44192e..bb4cf1fa0dc2c 100644
--- a/fs/xfs/libxfs/xfs_attr_remote.c
+++ b/fs/xfs/libxfs/xfs_attr_remote.c
@@ -553,8 +553,10 @@ xfs_attr_rmtval_stale(
ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
if (XFS_IS_CORRUPT(mp, map->br_startblock == DELAYSTARTBLOCK) ||
- XFS_IS_CORRUPT(mp, map->br_startblock == HOLESTARTBLOCK))
+ XFS_IS_CORRUPT(mp, map->br_startblock == HOLESTARTBLOCK)) {
+ xfs_bmap_mark_sick(ip, XFS_ATTR_FORK);
return -EFSCORRUPTED;
+ }
error = xfs_buf_incore(mp->m_ddev_targp,
XFS_FSB_TO_DADDR(mp, map->br_startblock),
@@ -664,8 +666,10 @@ xfs_attr_rmtval_invalidate(
blkcnt, &map, &nmap, XFS_BMAPI_ATTRFORK);
if (error)
return error;
- if (XFS_IS_CORRUPT(args->dp->i_mount, nmap != 1))
+ if (XFS_IS_CORRUPT(args->dp->i_mount, nmap != 1)) {
+ xfs_bmap_mark_sick(args->dp, XFS_ATTR_FORK);
return -EFSCORRUPTED;
+ }
error = xfs_attr_rmtval_stale(args->dp, &map, XBF_TRYLOCK);
if (error)
return error;
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
index 61918ca34658b..f815e8b2809bc 100644
--- a/fs/xfs/libxfs/xfs_bmap.c
+++ b/fs/xfs/libxfs/xfs_bmap.c
@@ -386,6 +386,7 @@ xfs_bmap_check_leaf_extents(
pp = XFS_BMBT_PTR_ADDR(mp, block, 1, mp->m_bmap_dmxr[1]);
bno = be64_to_cpu(*pp);
if (XFS_IS_CORRUPT(mp, !xfs_verify_fsbno(mp, bno))) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -567,8 +568,10 @@ xfs_bmap_btree_to_extents(
pp = XFS_BMAP_BROOT_PTR_ADDR(mp, rblock, 1, ifp->if_broot_bytes);
cbno = be64_to_cpu(*pp);
#ifdef DEBUG
- if (XFS_IS_CORRUPT(cur->bc_mp, !xfs_btree_check_lptr(cur, cbno, 1)))
+ if (XFS_IS_CORRUPT(cur->bc_mp, !xfs_btree_check_lptr(cur, cbno, 1))) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
#endif
error = xfs_btree_read_bufl(mp, tp, cbno, &cbp, XFS_BMAP_BTREE_REF,
&xfs_bmbt_buf_ops);
@@ -885,6 +888,7 @@ xfs_bmap_add_attrfork_btree(
goto error0;
/* must be at least one entry */
if (XFS_IS_CORRUPT(mp, stat != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1211,6 +1215,7 @@ xfs_iread_extents(
goto out;
if (XFS_IS_CORRUPT(mp, ir.loaded != ifp->if_nextents)) {
+ xfs_bmap_mark_sick(ip, whichfork);
error = -EFSCORRUPTED;
goto out;
}
@@ -1401,8 +1406,10 @@ xfs_bmap_last_offset(
if (ifp->if_format == XFS_DINODE_FMT_LOCAL)
return 0;
- if (XFS_IS_CORRUPT(ip->i_mount, !xfs_ifork_has_extents(ifp)))
+ if (XFS_IS_CORRUPT(ip->i_mount, !xfs_ifork_has_extents(ifp))) {
+ xfs_bmap_mark_sick(ip, whichfork);
return -EFSCORRUPTED;
+ }
error = xfs_bmap_last_extent(NULL, ip, whichfork, &rec, &is_empty);
if (error || is_empty)
@@ -1541,6 +1548,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1548,6 +1556,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1555,6 +1564,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1584,6 +1594,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1617,6 +1628,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1645,6 +1657,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1652,6 +1665,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1686,6 +1700,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1711,6 +1726,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1718,6 +1734,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1762,6 +1779,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1798,6 +1816,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1805,6 +1824,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1884,6 +1904,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1891,6 +1912,7 @@ xfs_bmap_add_extent_delay_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(bma->cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2087,30 +2109,35 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if ((error = xfs_btree_delete(cur, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if ((error = xfs_btree_decrement(cur, 0, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if ((error = xfs_btree_delete(cur, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if ((error = xfs_btree_decrement(cur, 0, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2139,18 +2166,21 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if ((error = xfs_btree_delete(cur, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if ((error = xfs_btree_decrement(cur, 0, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2182,18 +2212,21 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if ((error = xfs_btree_delete(cur, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if ((error = xfs_btree_decrement(cur, 0, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2220,6 +2253,7 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2253,6 +2287,7 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2290,6 +2325,7 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2300,6 +2336,7 @@ xfs_bmap_add_extent_unwritten_real(
if ((error = xfs_btree_insert(cur, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2330,6 +2367,7 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2366,6 +2404,7 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2376,12 +2415,14 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if ((error = xfs_btree_insert(cur, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2418,6 +2459,7 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2430,6 +2472,7 @@ xfs_bmap_add_extent_unwritten_real(
if ((error = xfs_btree_insert(cur, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2442,6 +2485,7 @@ xfs_bmap_add_extent_unwritten_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2449,6 +2493,7 @@ xfs_bmap_add_extent_unwritten_real(
if ((error = xfs_btree_insert(cur, &i)))
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2734,6 +2779,7 @@ xfs_bmap_add_extent_hole_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2741,6 +2787,7 @@ xfs_bmap_add_extent_hole_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2748,6 +2795,7 @@ xfs_bmap_add_extent_hole_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2777,6 +2825,7 @@ xfs_bmap_add_extent_hole_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2807,6 +2856,7 @@ xfs_bmap_add_extent_hole_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2833,6 +2883,7 @@ xfs_bmap_add_extent_hole_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2840,6 +2891,7 @@ xfs_bmap_add_extent_hole_real(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -5094,8 +5146,10 @@ xfs_bmap_del_extent_real(
error = xfs_bmbt_lookup_eq(cur, &got, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
}
if (got.br_startoff == del->br_startoff)
@@ -5119,8 +5173,10 @@ xfs_bmap_del_extent_real(
}
if ((error = xfs_btree_delete(cur, &i)))
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
break;
case BMAP_LEFT_FILLING:
/*
@@ -5192,8 +5248,10 @@ xfs_bmap_del_extent_real(
error = xfs_bmbt_lookup_eq(cur, &got, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
/*
* Update the btree record back
* to the original value.
@@ -5209,8 +5267,10 @@ xfs_bmap_del_extent_real(
*logflagsp = 0;
return -ENOSPC;
}
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
} else
*logflagsp |= xfs_ilog_fext(whichfork);
@@ -5665,21 +5725,27 @@ xfs_bmse_merge(
error = xfs_bmbt_lookup_eq(cur, got, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
error = xfs_btree_delete(cur, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
/* lookup and update size of the previous extent */
error = xfs_bmbt_lookup_eq(cur, left, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
error = xfs_bmbt_update(cur, &new);
if (error)
@@ -5727,8 +5793,10 @@ xfs_bmap_shift_update_extent(
error = xfs_bmbt_lookup_eq(cur, &prev, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(mp, i != 1))
+ if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
error = xfs_bmbt_update(cur, got);
if (error)
@@ -5789,6 +5857,7 @@ xfs_bmap_collapse_extents(
goto del_cursor;
}
if (XFS_IS_CORRUPT(mp, isnullstartblock(got.br_startblock))) {
+ xfs_bmap_mark_sick(ip, whichfork);
error = -EFSCORRUPTED;
goto del_cursor;
}
@@ -5914,11 +5983,13 @@ xfs_bmap_insert_extents(
}
}
if (XFS_IS_CORRUPT(mp, isnullstartblock(got.br_startblock))) {
+ xfs_bmap_mark_sick(ip, whichfork);
error = -EFSCORRUPTED;
goto del_cursor;
}
if (XFS_IS_CORRUPT(mp, stop_fsb > got.br_startoff)) {
+ xfs_bmap_mark_sick(ip, whichfork);
error = -EFSCORRUPTED;
goto del_cursor;
}
@@ -6018,6 +6089,7 @@ xfs_bmap_split_extent(
if (error)
goto del_cursor;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto del_cursor;
}
@@ -6045,6 +6117,7 @@ xfs_bmap_split_extent(
if (error)
goto del_cursor;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto del_cursor;
}
@@ -6052,6 +6125,7 @@ xfs_bmap_split_extent(
if (error)
goto del_cursor;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto del_cursor;
}
diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c
index 51d0a569e8216..28ba528086888 100644
--- a/fs/xfs/libxfs/xfs_btree.c
+++ b/fs/xfs/libxfs/xfs_btree.c
@@ -2026,8 +2026,10 @@ xfs_btree_lookup(
error = xfs_btree_increment(cur, 0, &i);
if (error)
goto error0;
- if (XFS_IS_CORRUPT(cur->bc_mp, i != 1))
+ if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
*stat = 1;
return 0;
}
@@ -2480,6 +2482,7 @@ xfs_btree_lshift(
goto error0;
i = xfs_btree_firstrec(tcur, level);
if (XFS_IS_CORRUPT(tcur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2650,6 +2653,7 @@ xfs_btree_rshift(
goto error0;
i = xfs_btree_lastrec(tcur, level);
if (XFS_IS_CORRUPT(tcur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -3538,6 +3542,7 @@ xfs_btree_insert(
}
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -3945,6 +3950,7 @@ xfs_btree_delrec(
*/
i = xfs_btree_lastrec(tcur, level);
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -3953,12 +3959,14 @@ xfs_btree_delrec(
if (error)
goto error0;
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
i = xfs_btree_lastrec(tcur, level);
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -4006,6 +4014,7 @@ xfs_btree_delrec(
if (!xfs_btree_ptr_is_null(cur, &lptr)) {
i = xfs_btree_firstrec(tcur, level);
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -4014,6 +4023,7 @@ xfs_btree_delrec(
if (error)
goto error0;
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -4031,6 +4041,7 @@ xfs_btree_delrec(
*/
i = xfs_btree_firstrec(tcur, level);
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -4040,6 +4051,7 @@ xfs_btree_delrec(
goto error0;
i = xfs_btree_firstrec(tcur, level);
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c
index 56f82b8af07e8..1ff867075026d 100644
--- a/fs/xfs/libxfs/xfs_ialloc.c
+++ b/fs/xfs/libxfs/xfs_ialloc.c
@@ -573,6 +573,7 @@ xfs_inobt_insert_sprec(
if (error)
goto error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error;
}
@@ -589,10 +590,12 @@ xfs_inobt_insert_sprec(
if (error)
goto error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error;
}
if (XFS_IS_CORRUPT(mp, rec.ir_startino != nrec->ir_startino)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error;
}
@@ -602,6 +605,7 @@ xfs_inobt_insert_sprec(
* cannot merge, something is seriously wrong.
*/
if (XFS_IS_CORRUPT(mp, !__xfs_inobt_can_merge(nrec, &rec))) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error;
}
@@ -951,8 +955,10 @@ xfs_ialloc_next_rec(
error = xfs_inobt_get_rec(cur, rec, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(cur->bc_mp, i != 1))
+ if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
}
return 0;
@@ -976,8 +982,10 @@ xfs_ialloc_get_rec(
error = xfs_inobt_get_rec(cur, rec, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(cur->bc_mp, i != 1))
+ if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
}
return 0;
@@ -1055,6 +1063,7 @@ xfs_dialloc_ag_inobt(
if (error)
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1063,6 +1072,7 @@ xfs_dialloc_ag_inobt(
if (error)
goto error0;
if (XFS_IS_CORRUPT(mp, j != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1221,6 +1231,7 @@ xfs_dialloc_ag_inobt(
if (error)
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1230,6 +1241,7 @@ xfs_dialloc_ag_inobt(
if (error)
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1239,6 +1251,7 @@ xfs_dialloc_ag_inobt(
if (error)
goto error0;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1299,8 +1312,10 @@ xfs_dialloc_ag_finobt_near(
error = xfs_inobt_get_rec(lcur, rec, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(lcur->bc_mp, i != 1))
+ if (XFS_IS_CORRUPT(lcur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(lcur);
return -EFSCORRUPTED;
+ }
/*
* See if we've landed in the parent inode record. The finobt
@@ -1324,12 +1339,14 @@ xfs_dialloc_ag_finobt_near(
if (error)
goto error_rcur;
if (XFS_IS_CORRUPT(lcur->bc_mp, j != 1)) {
+ xfs_btree_mark_sick(lcur);
error = -EFSCORRUPTED;
goto error_rcur;
}
}
if (XFS_IS_CORRUPT(lcur->bc_mp, i != 1 && j != 1)) {
+ xfs_btree_mark_sick(lcur);
error = -EFSCORRUPTED;
goto error_rcur;
}
@@ -1385,8 +1402,10 @@ xfs_dialloc_ag_finobt_newino(
error = xfs_inobt_get_rec(cur, rec, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(cur->bc_mp, i != 1))
+ if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
return 0;
}
}
@@ -1397,14 +1416,18 @@ xfs_dialloc_ag_finobt_newino(
error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(cur->bc_mp, i != 1))
+ if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
error = xfs_inobt_get_rec(cur, rec, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(cur->bc_mp, i != 1))
+ if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
return 0;
}
@@ -1426,14 +1449,18 @@ xfs_dialloc_ag_update_inobt(
error = xfs_inobt_lookup(cur, frec->ir_startino, XFS_LOOKUP_EQ, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(cur->bc_mp, i != 1))
+ if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
error = xfs_inobt_get_rec(cur, &rec, &i);
if (error)
return error;
- if (XFS_IS_CORRUPT(cur->bc_mp, i != 1))
+ if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
ASSERT((XFS_AGINO_TO_OFFSET(cur->bc_mp, rec.ir_startino) %
XFS_INODES_PER_CHUNK) == 0);
@@ -1442,8 +1469,10 @@ xfs_dialloc_ag_update_inobt(
if (XFS_IS_CORRUPT(cur->bc_mp,
rec.ir_free != frec->ir_free ||
- rec.ir_freecount != frec->ir_freecount))
+ rec.ir_freecount != frec->ir_freecount)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
return xfs_inobt_update(cur, &rec);
}
@@ -1960,6 +1989,7 @@ xfs_difree_inobt(
goto error0;
}
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -1970,6 +2000,7 @@ xfs_difree_inobt(
goto error0;
}
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error0;
}
@@ -2082,6 +2113,7 @@ xfs_difree_finobt(
* something is out of sync.
*/
if (XFS_IS_CORRUPT(mp, ibtrec->ir_freecount != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error;
}
@@ -2108,6 +2140,7 @@ xfs_difree_finobt(
if (error)
goto error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error;
}
@@ -2118,6 +2151,7 @@ xfs_difree_finobt(
if (XFS_IS_CORRUPT(mp,
rec.ir_free != ibtrec->ir_free ||
rec.ir_freecount != ibtrec->ir_freecount)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto error;
}
diff --git a/fs/xfs/libxfs/xfs_refcount.c b/fs/xfs/libxfs/xfs_refcount.c
index 91f1066f408b9..90a4526fef929 100644
--- a/fs/xfs/libxfs/xfs_refcount.c
+++ b/fs/xfs/libxfs/xfs_refcount.c
@@ -240,6 +240,7 @@ xfs_refcount_insert(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, *i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -270,12 +271,14 @@ xfs_refcount_delete(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
trace_xfs_refcount_delete(cur->bc_mp, cur->bc_ag.pag->pag_agno, &irec);
error = xfs_btree_delete(cur, i);
if (XFS_IS_CORRUPT(cur->bc_mp, *i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -400,6 +403,7 @@ xfs_refcount_split_extent(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -427,6 +431,7 @@ xfs_refcount_split_extent(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -472,6 +477,7 @@ xfs_refcount_merge_center_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -480,6 +486,7 @@ xfs_refcount_merge_center_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -489,6 +496,7 @@ xfs_refcount_merge_center_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -500,6 +508,7 @@ xfs_refcount_merge_center_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -544,6 +553,7 @@ xfs_refcount_merge_left_extent(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -552,6 +562,7 @@ xfs_refcount_merge_left_extent(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -563,6 +574,7 @@ xfs_refcount_merge_left_extent(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -610,6 +622,7 @@ xfs_refcount_merge_right_extent(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -618,6 +631,7 @@ xfs_refcount_merge_right_extent(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -629,6 +643,7 @@ xfs_refcount_merge_right_extent(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -676,6 +691,7 @@ xfs_refcount_find_left_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -695,6 +711,7 @@ xfs_refcount_find_left_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -769,6 +786,7 @@ xfs_refcount_find_right_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -788,6 +806,7 @@ xfs_refcount_find_right_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1144,6 +1163,7 @@ xfs_refcount_adjust_extents(
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp,
found_tmp != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1182,6 +1202,7 @@ xfs_refcount_adjust_extents(
*/
if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_blockcount == 0) ||
XFS_IS_CORRUPT(cur->bc_mp, ext.rc_blockcount > *aglen)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1205,6 +1226,7 @@ xfs_refcount_adjust_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1329,8 +1351,10 @@ xfs_refcount_continue_op(
struct xfs_perag *pag = cur->bc_ag.pag;
if (XFS_IS_CORRUPT(mp, !xfs_verify_agbext(pag, new_agbno,
- ri->ri_blockcount)))
+ ri->ri_blockcount))) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
ri->ri_startblock = XFS_AGB_TO_FSB(mp, pag->pag_agno, new_agbno);
@@ -1537,6 +1561,7 @@ xfs_refcount_find_shared(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1554,6 +1579,7 @@ xfs_refcount_find_shared(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1587,6 +1613,7 @@ xfs_refcount_find_shared(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1684,6 +1711,7 @@ xfs_refcount_adjust_cow_extents(
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec &&
ext.rc_domain != XFS_REFC_DOMAIN_COW)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1699,6 +1727,7 @@ xfs_refcount_adjust_cow_extents(
/* Adding a CoW reservation, there should be nothing here. */
if (XFS_IS_CORRUPT(cur->bc_mp,
agbno + aglen > ext.rc_startblock)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1716,6 +1745,7 @@ xfs_refcount_adjust_cow_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_tmp != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1723,14 +1753,17 @@ xfs_refcount_adjust_cow_extents(
case XFS_REFCOUNT_ADJUST_COW_FREE:
/* Removing a CoW reservation, there should be one extent. */
if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_startblock != agbno)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_blockcount != aglen)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_refcount != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1742,6 +1775,7 @@ xfs_refcount_adjust_cow_extents(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1904,6 +1938,7 @@ xfs_refcount_recover_extent(
if (xfs_refcount_check_irec(cur->bc_ag.pag, &rr->rr_rrec) != NULL ||
XFS_IS_CORRUPT(cur->bc_mp,
rr->rr_rrec.rc_domain != XFS_REFC_DOMAIN_COW)) {
+ xfs_btree_mark_sick(cur);
kfree(rr);
return -EFSCORRUPTED;
}
diff --git a/fs/xfs/libxfs/xfs_rmap.c b/fs/xfs/libxfs/xfs_rmap.c
index 76a2e47b8a8ee..cad9b456db81f 100644
--- a/fs/xfs/libxfs/xfs_rmap.c
+++ b/fs/xfs/libxfs/xfs_rmap.c
@@ -135,6 +135,7 @@ xfs_rmap_insert(
if (error)
goto done;
if (XFS_IS_CORRUPT(rcur->bc_mp, i != 0)) {
+ xfs_btree_mark_sick(rcur);
error = -EFSCORRUPTED;
goto done;
}
@@ -148,6 +149,7 @@ xfs_rmap_insert(
if (error)
goto done;
if (XFS_IS_CORRUPT(rcur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(rcur);
error = -EFSCORRUPTED;
goto done;
}
@@ -177,6 +179,7 @@ xfs_rmap_delete(
if (error)
goto done;
if (XFS_IS_CORRUPT(rcur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(rcur);
error = -EFSCORRUPTED;
goto done;
}
@@ -185,6 +188,7 @@ xfs_rmap_delete(
if (error)
goto done;
if (XFS_IS_CORRUPT(rcur->bc_mp, i != 1)) {
+ xfs_btree_mark_sick(rcur);
error = -EFSCORRUPTED;
goto done;
}
@@ -516,7 +520,7 @@ xfs_rmap_lookup_le_range(
*/
static int
xfs_rmap_free_check_owner(
- struct xfs_mount *mp,
+ struct xfs_btree_cur *cur,
uint64_t ltoff,
struct xfs_rmap_irec *rec,
xfs_filblks_t len,
@@ -524,6 +528,7 @@ xfs_rmap_free_check_owner(
uint64_t offset,
unsigned int flags)
{
+ struct xfs_mount *mp = cur->bc_mp;
int error = 0;
if (owner == XFS_RMAP_OWN_UNKNOWN)
@@ -533,12 +538,14 @@ xfs_rmap_free_check_owner(
if (XFS_IS_CORRUPT(mp,
(flags & XFS_RMAP_UNWRITTEN) !=
(rec->rm_flags & XFS_RMAP_UNWRITTEN))) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out;
}
/* Make sure the owner matches what we expect to find in the tree. */
if (XFS_IS_CORRUPT(mp, owner != rec->rm_owner)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out;
}
@@ -550,16 +557,19 @@ xfs_rmap_free_check_owner(
if (flags & XFS_RMAP_BMBT_BLOCK) {
if (XFS_IS_CORRUPT(mp,
!(rec->rm_flags & XFS_RMAP_BMBT_BLOCK))) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out;
}
} else {
if (XFS_IS_CORRUPT(mp, rec->rm_offset > offset)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out;
}
if (XFS_IS_CORRUPT(mp,
offset + len > ltoff + rec->rm_blockcount)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out;
}
@@ -622,6 +632,7 @@ xfs_rmap_unmap(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -643,6 +654,7 @@ xfs_rmap_unmap(
if (XFS_IS_CORRUPT(mp,
bno <
ltrec.rm_startblock + ltrec.rm_blockcount)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -669,6 +681,7 @@ xfs_rmap_unmap(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -681,12 +694,13 @@ xfs_rmap_unmap(
ltrec.rm_startblock > bno ||
ltrec.rm_startblock + ltrec.rm_blockcount <
bno + len)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
/* Check owner information. */
- error = xfs_rmap_free_check_owner(mp, ltoff, <rec, len, owner,
+ error = xfs_rmap_free_check_owner(cur, ltoff, <rec, len, owner,
offset, flags);
if (error)
goto out_error;
@@ -701,6 +715,7 @@ xfs_rmap_unmap(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -904,6 +919,7 @@ xfs_rmap_map(
if (XFS_IS_CORRUPT(mp,
have_lt != 0 &&
ltrec.rm_startblock + ltrec.rm_blockcount > bno)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -921,10 +937,12 @@ xfs_rmap_map(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, have_gt != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
if (XFS_IS_CORRUPT(mp, bno + len > gtrec.rm_startblock)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -978,6 +996,7 @@ xfs_rmap_map(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1025,6 +1044,7 @@ xfs_rmap_map(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -1120,6 +1140,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1157,12 +1178,14 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if (XFS_IS_CORRUPT(mp,
LEFT.rm_startblock + LEFT.rm_blockcount >
bno)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1185,6 +1208,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1197,10 +1221,12 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if (XFS_IS_CORRUPT(mp, bno + len > RIGHT.rm_startblock)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1231,6 +1257,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1250,6 +1277,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1261,6 +1289,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1268,6 +1297,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1279,6 +1309,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1286,6 +1317,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1309,6 +1341,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1316,6 +1349,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1335,6 +1369,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1346,6 +1381,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1353,6 +1389,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1423,6 +1460,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1465,6 +1503,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1480,6 +1519,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1513,6 +1553,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1526,6 +1567,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 0)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1538,6 +1580,7 @@ xfs_rmap_convert(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1610,6 +1653,7 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1638,6 +1682,7 @@ xfs_rmap_convert_shared(
if (XFS_IS_CORRUPT(mp,
LEFT.rm_startblock + LEFT.rm_blockcount >
bno)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1656,10 +1701,12 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
if (XFS_IS_CORRUPT(mp, bno + len > RIGHT.rm_startblock)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1710,6 +1757,7 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1736,6 +1784,7 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1762,6 +1811,7 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1785,6 +1835,7 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1820,6 +1871,7 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1865,6 +1917,7 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1900,6 +1953,7 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -1938,6 +1992,7 @@ xfs_rmap_convert_shared(
if (error)
goto done;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto done;
}
@@ -2027,6 +2082,7 @@ xfs_rmap_unmap_shared(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -2037,12 +2093,14 @@ xfs_rmap_unmap_shared(
ltrec.rm_startblock > bno ||
ltrec.rm_startblock + ltrec.rm_blockcount <
bno + len)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
/* Make sure the owner matches what we expect to find in the tree. */
if (XFS_IS_CORRUPT(mp, owner != ltrec.rm_owner)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -2051,16 +2109,19 @@ xfs_rmap_unmap_shared(
if (XFS_IS_CORRUPT(mp,
(flags & XFS_RMAP_UNWRITTEN) !=
(ltrec.rm_flags & XFS_RMAP_UNWRITTEN))) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
/* Check the offset. */
if (XFS_IS_CORRUPT(mp, ltrec.rm_offset > offset)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
if (XFS_IS_CORRUPT(mp, offset > ltoff + ltrec.rm_blockcount)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -2117,6 +2178,7 @@ xfs_rmap_unmap_shared(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -2146,6 +2208,7 @@ xfs_rmap_unmap_shared(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -2225,6 +2288,7 @@ xfs_rmap_map_shared(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, have_gt != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -2277,6 +2341,7 @@ xfs_rmap_map_shared(
if (error)
goto out_error;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out_error;
}
@@ -2480,10 +2545,14 @@ xfs_rmap_finish_one(
* allocate blocks.
*/
error = xfs_free_extent_fix_freelist(tp, ri->ri_pag, &agbp);
- if (error)
+ if (error) {
+ xfs_ag_mark_sick(ri->ri_pag, XFS_SICK_AG_AGFL);
return error;
- if (XFS_IS_CORRUPT(tp->t_mountp, !agbp))
+ }
+ if (XFS_IS_CORRUPT(tp->t_mountp, !agbp)) {
+ xfs_ag_mark_sick(ri->ri_pag, XFS_SICK_AG_AGFL);
return -EFSCORRUPTED;
+ }
rcur = xfs_rmapbt_init_cursor(mp, tp, agbp, ri->ri_pag);
}
diff --git a/fs/xfs/scrub/refcount_repair.c b/fs/xfs/scrub/refcount_repair.c
index f38fccc42a209..9c39af03ee1d8 100644
--- a/fs/xfs/scrub/refcount_repair.c
+++ b/fs/xfs/scrub/refcount_repair.c
@@ -25,6 +25,7 @@
#include "xfs_refcount_btree.h"
#include "xfs_error.h"
#include "xfs_ag.h"
+#include "xfs_health.h"
#include "scrub/xfs_scrub.h"
#include "scrub/scrub.h"
#include "scrub/common.h"
@@ -253,8 +254,10 @@ xrep_refc_walk_rmaps(
error = xfs_rmap_get_rec(cur, &rmap, &have_gt);
if (error)
return error;
- if (XFS_IS_CORRUPT(mp, !have_gt))
+ if (XFS_IS_CORRUPT(mp, !have_gt)) {
+ xfs_btree_mark_sick(cur);
return -EFSCORRUPTED;
+ }
if (rmap.rm_owner == XFS_RMAP_OWN_COW) {
error = xrep_refc_stash_cow(rr, rmap.rm_startblock,
@@ -425,8 +428,10 @@ xrep_refc_push_rmaps_at(
error = xfs_btree_decrement(sc->sa.rmap_cur, 0, &have_gt);
if (error)
return error;
- if (XFS_IS_CORRUPT(sc->mp, !have_gt))
+ if (XFS_IS_CORRUPT(sc->mp, !have_gt)) {
+ xfs_btree_mark_sick(sc->sa.rmap_cur);
return -EFSCORRUPTED;
+ }
return 0;
}
diff --git a/fs/xfs/xfs_attr_list.c b/fs/xfs/xfs_attr_list.c
index 305559bfe2a14..dcfa8e8e146a3 100644
--- a/fs/xfs/xfs_attr_list.c
+++ b/fs/xfs/xfs_attr_list.c
@@ -84,8 +84,10 @@ xfs_attr_shortform_list(
for (i = 0, sfe = &sf->list[0]; i < sf->hdr.count; i++) {
if (XFS_IS_CORRUPT(context->dp->i_mount,
!xfs_attr_namecheck(sfe->nameval,
- sfe->namelen)))
+ sfe->namelen))) {
+ xfs_dirattr_mark_sick(context->dp, XFS_ATTR_FORK);
return -EFSCORRUPTED;
+ }
context->put_listent(context,
sfe->flags,
sfe->nameval,
@@ -178,6 +180,7 @@ xfs_attr_shortform_list(
if (XFS_IS_CORRUPT(context->dp->i_mount,
!xfs_attr_namecheck(sbp->name,
sbp->namelen))) {
+ xfs_dirattr_mark_sick(context->dp, XFS_ATTR_FORK);
error = -EFSCORRUPTED;
goto out;
}
@@ -472,8 +475,10 @@ xfs_attr3_leaf_list_int(
}
if (XFS_IS_CORRUPT(context->dp->i_mount,
- !xfs_attr_namecheck(name, namelen)))
+ !xfs_attr_namecheck(name, namelen))) {
+ xfs_dirattr_mark_sick(context->dp, XFS_ATTR_FORK);
return -EFSCORRUPTED;
+ }
context->put_listent(context, entry->flags,
name, namelen, valuelen);
if (context->seen_enough)
diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c
index 57f42c2af0a31..a457be34b3fff 100644
--- a/fs/xfs/xfs_dir2_readdir.c
+++ b/fs/xfs/xfs_dir2_readdir.c
@@ -120,8 +120,10 @@ xfs_dir2_sf_getdents(
ctx->pos = off & 0x7fffffff;
if (XFS_IS_CORRUPT(dp->i_mount,
!xfs_dir2_namecheck(sfep->name,
- sfep->namelen)))
+ sfep->namelen))) {
+ xfs_dirattr_mark_sick(dp, XFS_DATA_FORK);
return -EFSCORRUPTED;
+ }
if (!dir_emit(ctx, (char *)sfep->name, sfep->namelen, ino,
xfs_dir3_get_dtype(mp, filetype)))
return 0;
@@ -213,6 +215,7 @@ xfs_dir2_block_getdents(
if (XFS_IS_CORRUPT(dp->i_mount,
!xfs_dir2_namecheck(dep->name,
dep->namelen))) {
+ xfs_dirattr_mark_sick(dp, XFS_DATA_FORK);
error = -EFSCORRUPTED;
goto out_rele;
}
@@ -467,6 +470,7 @@ xfs_dir2_leaf_getdents(
if (XFS_IS_CORRUPT(dp->i_mount,
!xfs_dir2_namecheck(dep->name,
dep->namelen))) {
+ xfs_dirattr_mark_sick(dp, XFS_DATA_FORK);
error = -EFSCORRUPTED;
break;
}
diff --git a/fs/xfs/xfs_discard.c b/fs/xfs/xfs_discard.c
index d5787991bb5b4..e38c4c46d1275 100644
--- a/fs/xfs/xfs_discard.c
+++ b/fs/xfs/xfs_discard.c
@@ -18,6 +18,7 @@
#include "xfs_trace.h"
#include "xfs_log.h"
#include "xfs_ag.h"
+#include "xfs_health.h"
/*
* Notes on an efficient, low latency fstrim algorithm
@@ -204,6 +205,7 @@ xfs_trim_gather_extents(
if (error)
break;
if (XFS_IS_CORRUPT(mp, i != 1)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
break;
}
diff --git a/fs/xfs/xfs_iwalk.c b/fs/xfs/xfs_iwalk.c
index 4ce85423ef3e0..6f26a791f17f0 100644
--- a/fs/xfs/xfs_iwalk.c
+++ b/fs/xfs/xfs_iwalk.c
@@ -297,8 +297,10 @@ xfs_iwalk_ag_start(
error = xfs_inobt_get_rec(*curpp, irec, has_more);
if (error)
return error;
- if (XFS_IS_CORRUPT(mp, *has_more != 1))
+ if (XFS_IS_CORRUPT(mp, *has_more != 1)) {
+ xfs_btree_mark_sick(*curpp);
return -EFSCORRUPTED;
+ }
iwag->lastino = XFS_AGINO_TO_INO(mp, pag->pag_agno,
irec->ir_startino + XFS_INODES_PER_CHUNK - 1);
@@ -425,6 +427,7 @@ xfs_iwalk_ag(
rec_fsino = XFS_AGINO_TO_INO(mp, pag->pag_agno, irec->ir_startino);
if (iwag->lastino != NULLFSINO &&
XFS_IS_CORRUPT(mp, iwag->lastino >= rec_fsino)) {
+ xfs_btree_mark_sick(cur);
error = -EFSCORRUPTED;
goto out;
}
next prev parent reply other threads:[~2023-12-31 20:12 UTC|newest]
Thread overview: 640+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
2023-12-31 19:25 ` [PATCHSET v29.0 01/28] xfs: live inode scans for online fsck Darrick J. Wong
2023-12-31 20:04 ` [PATCH 1/7] xfs: speed up xfs_iwalk_adjust_start a little bit Darrick J. Wong
2024-01-02 10:24 ` Christoph Hellwig
2023-12-31 20:04 ` [PATCH 2/7] xfs: implement live inode scan for scrub Darrick J. Wong
2024-01-02 11:22 ` Christoph Hellwig
2023-12-31 20:05 ` [PATCH 3/7] xfs: allow scrub to hook metadata updates in other writers Darrick J. Wong
2024-01-02 11:30 ` Christoph Hellwig
2024-01-03 0:23 ` Darrick J. Wong
2023-12-31 20:05 ` [PATCH 4/7] xfs: allow blocking notifier chains with filesystem hooks Darrick J. Wong
2024-01-02 10:28 ` Christoph Hellwig
2024-01-03 1:07 ` Darrick J. Wong
2024-01-03 7:37 ` Christoph Hellwig
2024-01-03 18:40 ` Darrick J. Wong
2023-12-31 20:05 ` [PATCH 5/7] xfs: stagger the starting AG of scrub iscans to reduce contention Darrick J. Wong
2024-01-02 11:30 ` Christoph Hellwig
2023-12-31 20:06 ` [PATCH 6/7] xfs: cache a bunch of inodes for repair scans Darrick J. Wong
2024-01-02 11:40 ` Christoph Hellwig
2023-12-31 20:06 ` [PATCH 7/7] xfs: iscan batching should handle unallocated inodes too Darrick J. Wong
2024-01-02 11:40 ` Christoph Hellwig
2024-01-03 1:09 ` Darrick J. Wong
2023-12-31 19:25 ` [PATCHSET v29.0 02/28] xfs: repair inode mode by scanning dirs Darrick J. Wong
2023-12-31 20:06 ` [PATCH 1/4] xfs: create a static name for the dot entry too Darrick J. Wong
2024-01-02 11:11 ` Christoph Hellwig
2023-12-31 20:06 ` [PATCH 2/4] xfs: create a predicate to determine if two xfs_names are the same Darrick J. Wong
2024-01-02 11:13 ` Christoph Hellwig
2024-01-03 0:02 ` Darrick J. Wong
2023-12-31 20:07 ` [PATCH 3/4] xfs: create a macro for decoding ftypes in tracepoints Darrick J. Wong
2024-01-02 11:13 ` Christoph Hellwig
2024-01-03 0:06 ` Darrick J. Wong
2023-12-31 20:07 ` [PATCH 4/4] xfs: repair file modes by scanning for a dirent pointing to us Darrick J. Wong
2024-01-02 10:29 ` Christoph Hellwig
2024-01-03 2:50 ` Darrick J. Wong
2024-01-03 7:38 ` Christoph Hellwig
2023-12-31 19:26 ` [PATCHSET v29.0 03/28] xfs: online repair of quota counters Darrick J. Wong
2023-12-31 20:07 ` [PATCH 1/5] xfs: report the health of quota counts Darrick J. Wong
2024-01-02 10:30 ` Christoph Hellwig
2023-12-31 20:07 ` [PATCH 2/5] xfs: implement live quotacheck inode scan Darrick J. Wong
2024-01-05 5:29 ` Christoph Hellwig
2024-01-06 1:16 ` Darrick J. Wong
2024-01-09 1:23 ` Darrick J. Wong
2024-01-09 4:35 ` Christoph Hellwig
2023-12-31 20:08 ` [PATCH 3/5] xfs: track quota updates during live quotacheck Darrick J. Wong
2024-01-05 5:30 ` Christoph Hellwig
2023-12-31 20:08 ` [PATCH 4/5] xfs: repair cannot update the summary counters when logging quota flags Darrick J. Wong
2024-01-05 5:35 ` Christoph Hellwig
2024-01-06 18:52 ` Darrick J. Wong
2023-12-31 20:08 ` [PATCH 5/5] xfs: repair dquots based on live quotacheck results Darrick J. Wong
2024-01-05 5:35 ` Christoph Hellwig
2023-12-31 19:26 ` [PATCHSET v29.0 04/28] xfs: online repair of file link counts Darrick J. Wong
2023-12-31 20:08 ` [PATCH 1/4] xfs: report health of inode " Darrick J. Wong
2024-01-05 5:39 ` Christoph Hellwig
2023-12-31 20:09 ` [PATCH 2/4] xfs: teach scrub to check file nlinks Darrick J. Wong
2024-01-05 5:40 ` Christoph Hellwig
2023-12-31 20:09 ` [PATCH 3/4] xfs: track directory entry updates during live nlinks fsck Darrick J. Wong
2024-01-05 5:41 ` Christoph Hellwig
2023-12-31 20:09 ` [PATCH 4/4] xfs: teach repair to fix file nlinks Darrick J. Wong
2024-01-05 5:42 ` Christoph Hellwig
2023-12-31 19:26 ` [PATCHSET v29.0 05/28] xfs: report corruption to the health trackers Darrick J. Wong
2023-12-31 20:09 ` [PATCH 01/11] xfs: separate the marking of sick and checked metadata Darrick J. Wong
2024-01-05 5:42 ` Christoph Hellwig
2023-12-31 20:10 ` [PATCH 02/11] xfs: report fs corruption errors to the health tracking system Darrick J. Wong
2024-01-05 5:42 ` Christoph Hellwig
2023-12-31 20:10 ` [PATCH 03/11] xfs: report ag header " Darrick J. Wong
2024-01-05 5:43 ` Christoph Hellwig
2023-12-31 20:10 ` [PATCH 04/11] xfs: report block map " Darrick J. Wong
2024-01-05 5:43 ` Christoph Hellwig
2023-12-31 20:10 ` [PATCH 05/11] xfs: report btree block corruption errors to the health system Darrick J. Wong
2024-01-05 5:43 ` Christoph Hellwig
2023-12-31 20:11 ` [PATCH 06/11] xfs: report dir/attr " Darrick J. Wong
2024-01-05 5:44 ` Christoph Hellwig
2023-12-31 20:11 ` [PATCH 07/11] xfs: report symlink " Darrick J. Wong
2024-01-05 5:44 ` Christoph Hellwig
2023-12-31 20:11 ` [PATCH 08/11] xfs: report inode " Darrick J. Wong
2024-01-05 5:44 ` Christoph Hellwig
2023-12-31 20:12 ` [PATCH 09/11] xfs: report quota block " Darrick J. Wong
2024-01-05 5:44 ` Christoph Hellwig
2023-12-31 20:12 ` [PATCH 10/11] xfs: report realtime metadata " Darrick J. Wong
2024-01-05 5:45 ` Christoph Hellwig
2023-12-31 20:12 ` Darrick J. Wong [this message]
2024-01-05 5:45 ` [PATCH 11/11] xfs: report XFS_IS_CORRUPT " Christoph Hellwig
2023-12-31 19:26 ` [PATCHSET v29.0 06/28] xfs: indirect health reporting Darrick J. Wong
2023-12-31 20:12 ` [PATCH 1/3] xfs: add secondary and indirect classes to the health tracking system Darrick J. Wong
2024-01-05 5:46 ` Christoph Hellwig
2023-12-31 20:13 ` [PATCH 2/3] xfs: remember sick inodes that get inactivated Darrick J. Wong
2024-01-05 5:46 ` Christoph Hellwig
2023-12-31 20:13 ` [PATCH 3/3] xfs: update health status if we get a clean bill of health Darrick J. Wong
2024-01-05 5:47 ` Christoph Hellwig
2023-12-31 19:27 ` [PATCHSET v29.0 07/28] xfs: online repair for fs summary counters Darrick J. Wong
2023-12-31 20:13 ` [PATCH 1/1] xfs: repair " Darrick J. Wong
2024-01-05 5:48 ` Christoph Hellwig
2023-12-31 19:27 ` [PATCHSET v29.0 08/28] xfs: support in-memory btrees Darrick J. Wong
2023-12-31 20:13 ` [PATCH 1/9] xfs: dump xfiles for debugging purposes Darrick J. Wong
2024-01-01 0:02 ` Matthew Wilcox
2024-01-03 1:52 ` Darrick J. Wong
2024-01-03 8:49 ` Christoph Hellwig
2023-12-31 20:14 ` [PATCH 2/9] xfs: teach buftargs to maintain their own buffer hashtable Darrick J. Wong
2023-12-31 20:14 ` [PATCH 3/9] xfs: create buftarg helpers to abstract block_device operations Darrick J. Wong
2024-01-03 8:51 ` Christoph Hellwig
2024-01-03 19:26 ` Darrick J. Wong
2024-01-03 19:32 ` Christoph Hellwig
2023-12-31 20:14 ` [PATCH 4/9] xfs: make GFP_ usage consistent when allocating buftargs Darrick J. Wong
2024-01-03 8:52 ` Christoph Hellwig
2023-12-31 20:14 ` [PATCH 5/9] xfs: support in-memory buffer cache targets Darrick J. Wong
2023-12-31 20:15 ` [PATCH 6/9] xfs: consolidate btree block freeing tracepoints Darrick J. Wong
2024-01-03 8:53 ` Christoph Hellwig
2024-01-03 19:37 ` Darrick J. Wong
2024-01-04 6:19 ` Christoph Hellwig
2024-01-04 7:15 ` Darrick J. Wong
2023-12-31 20:15 ` [PATCH 7/9] xfs: consolidate btree block allocation tracepoints Darrick J. Wong
2023-12-31 20:15 ` [PATCH 8/9] xfs: support in-memory btrees Darrick J. Wong
2024-01-04 6:47 ` Christoph Hellwig
2024-01-04 7:27 ` Darrick J. Wong
2024-01-04 7:30 ` Christoph Hellwig
2024-01-04 7:33 ` Darrick J. Wong
2024-01-04 7:40 ` Christoph Hellwig
2023-12-31 20:15 ` [PATCH 9/9] xfs: connect in-memory btrees to xfiles Darrick J. Wong
2024-01-01 0:18 ` Matthew Wilcox
2024-01-03 2:04 ` Darrick J. Wong
2024-01-04 6:54 ` Christoph Hellwig
2024-01-04 7:32 ` Darrick J. Wong
2024-01-04 7:41 ` Christoph Hellwig
2023-12-31 19:27 ` [PATCHSET v29.0 09/28] xfs: online repair of rmap btrees Darrick J. Wong
2023-12-31 20:16 ` [PATCH 1/4] xfs: create a helper to decide if a file mapping targets the rt volume Darrick J. Wong
2024-01-05 5:48 ` Christoph Hellwig
2023-12-31 20:16 ` [PATCH 2/4] xfs: repair the rmapbt Darrick J. Wong
2023-12-31 20:16 ` [PATCH 3/4] xfs: create a shadow rmap btree during rmap repair Darrick J. Wong
2023-12-31 20:16 ` [PATCH 4/4] xfs: hook live rmap operations during a repair operation Darrick J. Wong
2023-12-31 19:27 ` [PATCHSET v29.0 10/28] xfs: move btree geometry to ops struct Darrick J. Wong
2023-12-31 20:17 ` [PATCH 1/9] xfs: set the btree cursor bc_ops in xfs_btree_alloc_cursor Darrick J. Wong
2024-01-02 10:31 ` Christoph Hellwig
2023-12-31 20:17 ` [PATCH 2/9] xfs: encode the default bc_flags in the btree ops structure Darrick J. Wong
2024-01-02 10:33 ` Christoph Hellwig
2024-01-03 1:15 ` Darrick J. Wong
2024-01-03 19:58 ` Darrick J. Wong
2024-01-03 20:00 ` Darrick J. Wong
2024-01-03 20:35 ` Christoph Hellwig
2023-12-31 20:17 ` [PATCH 3/9] xfs: export some of the btree ops structures Darrick J. Wong
2024-01-02 10:36 ` Christoph Hellwig
2023-12-31 20:17 ` [PATCH 4/9] xfs: initialize btree blocks using btree_ops structure Darrick J. Wong
2024-01-02 10:36 ` Christoph Hellwig
2023-12-31 20:18 ` [PATCH 5/9] xfs: rename btree block/buffer init functions Darrick J. Wong
2024-01-02 10:37 ` Christoph Hellwig
2023-12-31 20:18 ` [PATCH 6/9] xfs: btree convert xfs_btree_init_block to xfs_btree_init_buf calls Darrick J. Wong
2024-01-02 10:37 ` Christoph Hellwig
2023-12-31 20:18 ` [PATCH 7/9] xfs: remove the unnecessary daddr paramter to _init_block Darrick J. Wong
2024-01-02 10:38 ` Christoph Hellwig
2023-12-31 20:19 ` [PATCH 8/9] xfs: set btree block buffer ops in _init_buf Darrick J. Wong
2024-01-02 10:38 ` Christoph Hellwig
2023-12-31 20:19 ` [PATCH 9/9] xfs: remove unnecessary fields in xfbtree_config Darrick J. Wong
2024-01-02 10:39 ` Christoph Hellwig
2024-01-03 2:51 ` Darrick J. Wong
2024-01-03 7:40 ` Christoph Hellwig
2023-12-31 19:28 ` [PATCHSET v29.0 11/28] xfs: reduce refcount repair memory usage Darrick J. Wong
2023-12-31 20:19 ` [PATCH 1/4] xfs: move lru refs to the btree ops structure Darrick J. Wong
2024-01-02 10:39 ` Christoph Hellwig
2023-12-31 20:19 ` [PATCH 2/4] xfs: define an in-memory btree for storing refcount bag info during repairs Darrick J. Wong
2024-01-02 10:41 ` Christoph Hellwig
2024-01-03 2:29 ` Darrick J. Wong
2023-12-31 20:20 ` [PATCH 3/4] xfs: create refcount bag structure for btree repairs Darrick J. Wong
2024-01-02 10:42 ` Christoph Hellwig
2023-12-31 20:20 ` [PATCH 4/4] xfs: port refcount repair to the new refcount bag structure Darrick J. Wong
2024-01-02 10:43 ` Christoph Hellwig
2024-01-03 2:31 ` Darrick J. Wong
2023-12-31 19:28 ` [PATCHSET v29.0 12/28] xfs: bmap log intent cleanups Darrick J. Wong
2023-12-31 20:20 ` [PATCH 1/7] xfs: split tracepoint classes for deferred items Darrick J. Wong
2024-01-02 10:44 ` Christoph Hellwig
2023-12-31 20:20 ` [PATCH 2/7] xfs: clean up bmap log intent item tracepoint callsites Darrick J. Wong
2024-01-02 10:44 ` Christoph Hellwig
2023-12-31 20:21 ` [PATCH 3/7] xfs: remove xfs_trans_set_bmap_flags Darrick J. Wong
2024-01-02 10:44 ` Christoph Hellwig
2023-12-31 20:21 ` [PATCH 4/7] xfs: add a bi_entry helper Darrick J. Wong
2024-01-02 10:44 ` Christoph Hellwig
2023-12-31 20:21 ` [PATCH 5/7] xfs: reuse xfs_bmap_update_cancel_item Darrick J. Wong
2024-01-02 10:45 ` Christoph Hellwig
2024-01-03 1:21 ` Darrick J. Wong
2023-12-31 20:21 ` [PATCH 6/7] xfs: move xfs_bmap_defer_add to xfs_bmap_item.c Darrick J. Wong
2024-01-02 10:45 ` Christoph Hellwig
2023-12-31 20:22 ` [PATCH 7/7] xfs: add a xattr_entry helper Darrick J. Wong
2024-01-02 10:45 ` Christoph Hellwig
2023-12-31 19:28 ` [PATCHSET v29.0 13/28] xfs: widen BUI formats to support realtime Darrick J. Wong
2023-12-31 20:22 ` [PATCH 1/3] xfs: fix xfs_bunmapi to allow unmapping of partial rt extents Darrick J. Wong
2024-01-02 10:46 ` Christoph Hellwig
2023-12-31 20:22 ` [PATCH 2/3] xfs: add a realtime flag to the bmap update log redo items Darrick J. Wong
2024-01-02 10:46 ` Christoph Hellwig
2023-12-31 20:22 ` [PATCH 3/3] xfs: support recovering bmap intent items targetting realtime extents Darrick J. Wong
2024-01-02 10:46 ` Christoph Hellwig
2023-12-31 19:29 ` [PATCHSET v29.0 14/28] xfs: support attrfork and unwritten BUIs Darrick J. Wong
2023-12-31 20:23 ` [PATCH 1/2] xfs: support deferred bmap updates on the attr fork Darrick J. Wong
2024-01-05 5:50 ` Christoph Hellwig
2023-12-31 20:23 ` [PATCH 2/2] xfs: xfs_bmap_finish_one should map unwritten extents properly Darrick J. Wong
2024-01-05 5:50 ` Christoph Hellwig
2023-12-31 19:29 ` [PATCHSET v29.0 15/28] xfs: clean up symbolic link code Darrick J. Wong
2023-12-31 20:23 ` [PATCH 1/3] xfs: move xfs_symlink_remote.c declarations to xfs_symlink_remote.h Darrick J. Wong
2024-01-05 5:51 ` Christoph Hellwig
2023-12-31 20:23 ` [PATCH 2/3] xfs: move remote symlink target read function to libxfs Darrick J. Wong
2024-01-05 5:51 ` Christoph Hellwig
2023-12-31 20:24 ` [PATCH 3/3] xfs: move symlink target write " Darrick J. Wong
2024-01-05 5:52 ` Christoph Hellwig
2023-12-31 19:29 ` [PATCHSET v29.0 16/28] xfs: atomic file updates Darrick J. Wong
2023-12-31 20:24 ` [PATCH 01/25] xfs: add a libxfs header file for staging new ioctls Darrick J. Wong
2023-12-31 20:24 ` [PATCH 02/25] xfs: introduce new file range exchange ioctl Darrick J. Wong
2023-12-31 20:25 ` [PATCH 03/25] xfs: move inode lease breaking functions to xfs_inode.c Darrick J. Wong
2023-12-31 20:25 ` [PATCH 04/25] xfs: move xfs_iops.c declarations out of xfs_inode.h Darrick J. Wong
2023-12-31 20:25 ` [PATCH 05/25] xfs: declare xfs_file.c symbols in xfs_file.h Darrick J. Wong
2023-12-31 20:25 ` [PATCH 06/25] xfs: create a new helper to return a file's allocation unit Darrick J. Wong
2023-12-31 20:26 ` [PATCH 07/25] xfs: refactor non-power-of-two alignment checks Darrick J. Wong
2023-12-31 20:26 ` [PATCH 08/25] xfs: parameterize all the incompat log feature helpers Darrick J. Wong
2023-12-31 20:26 ` [PATCH 09/25] xfs: create a log incompat flag for atomic extent swapping Darrick J. Wong
2023-12-31 20:26 ` [PATCH 10/25] xfs: introduce a swap-extent log intent item Darrick J. Wong
2023-12-31 20:27 ` [PATCH 11/25] xfs: create deferred log items for extent swapping Darrick J. Wong
2023-12-31 20:27 ` [PATCH 12/25] xfs: enable xlog users to toggle atomic " Darrick J. Wong
2023-12-31 20:27 ` [PATCH 13/25] xfs: bind the xfs-specific extent swap code to the vfs-generic file exchange code Darrick J. Wong
2023-12-31 20:27 ` [PATCH 14/25] xfs: add error injection to test swapext recovery Darrick J. Wong
2023-12-31 20:28 ` [PATCH 15/25] xfs: port xfs_swap_extents_rmap to our new code Darrick J. Wong
2023-12-31 20:28 ` [PATCH 16/25] xfs: consolidate all of the xfs_swap_extent_forks code Darrick J. Wong
2023-12-31 20:28 ` [PATCH 17/25] xfs: port xfs_swap_extent_forks to use xfs_swapext_req Darrick J. Wong
2023-12-31 20:28 ` [PATCH 18/25] xfs: allow xfs_swap_range to use older extent swap algorithms Darrick J. Wong
2023-12-31 20:29 ` [PATCH 19/25] xfs: remove old swap extents implementation Darrick J. Wong
2023-12-31 20:29 ` [PATCH 20/25] xfs: condense extended attributes after an atomic swap Darrick J. Wong
2023-12-31 20:29 ` [PATCH 21/25] xfs: condense directories " Darrick J. Wong
2023-12-31 20:29 ` [PATCH 22/25] xfs: condense symbolic links " Darrick J. Wong
2023-12-31 20:30 ` [PATCH 23/25] xfs: make atomic extent swapping support realtime files Darrick J. Wong
2023-12-31 20:30 ` [PATCH 24/25] xfs: support non-power-of-two rtextsize with exchange-range Darrick J. Wong
2023-12-31 20:30 ` [PATCH 25/25] xfs: enable atomic swapext feature Darrick J. Wong
2023-12-31 19:29 ` [PATCHSET v29.0 17/28] xfs: create temporary files for online repair Darrick J. Wong
2023-12-31 20:31 ` [PATCH 1/4] xfs: hide private inodes from bulkstat and handle functions Darrick J. Wong
2023-12-31 20:31 ` [PATCH 2/4] xfs: create temporary files and directories for online repair Darrick J. Wong
2023-12-31 20:31 ` [PATCH 3/4] xfs: refactor live buffer invalidation for repairs Darrick J. Wong
2023-12-31 20:31 ` [PATCH 4/4] xfs: add the ability to reap entire inode forks Darrick J. Wong
2023-12-31 19:30 ` [PATCHSET v29.0 18/28] xfs: online repair of realtime summaries Darrick J. Wong
2023-12-31 20:32 ` [PATCH 1/3] xfs: support preallocating and copying content into temporary files Darrick J. Wong
2023-12-31 20:32 ` [PATCH 2/3] xfs: teach the tempfile to support atomic extent swapping Darrick J. Wong
2023-12-31 20:32 ` [PATCH 3/3] xfs: online repair of realtime summaries Darrick J. Wong
2023-12-31 19:30 ` [PATCHSET v29.0 19/28] xfs: set and validate dir/attr block owners Darrick J. Wong
2023-12-31 20:32 ` [PATCH 1/9] xfs: add an explicit owner field to xfs_da_args Darrick J. Wong
2023-12-31 20:33 ` [PATCH 2/9] xfs: use the xfs_da_args owner field to set new dir/attr block owner Darrick J. Wong
2023-12-31 20:33 ` [PATCH 3/9] xfs: validate attr leaf buffer owners Darrick J. Wong
2023-12-31 20:33 ` [PATCH 4/9] xfs: validate attr remote value " Darrick J. Wong
2023-12-31 20:33 ` [PATCH 5/9] xfs: validate dabtree node " Darrick J. Wong
2023-12-31 20:34 ` [PATCH 6/9] xfs: validate directory leaf " Darrick J. Wong
2023-12-31 20:34 ` [PATCH 7/9] xfs: validate explicit directory data " Darrick J. Wong
2023-12-31 20:34 ` [PATCH 8/9] xfs: validate explicit directory block " Darrick J. Wong
2023-12-31 20:34 ` [PATCH 9/9] xfs: validate explicit directory free block owners Darrick J. Wong
2023-12-31 19:30 ` [PATCHSET v29.0 20/28] xfs: online repair of extended attributes Darrick J. Wong
2023-12-31 20:35 ` [PATCH 1/6] xfs: create a blob array data structure Darrick J. Wong
2024-01-05 5:53 ` Christoph Hellwig
2024-01-06 1:33 ` Darrick J. Wong
2024-01-06 6:42 ` Christoph Hellwig
2024-01-06 18:55 ` Darrick J. Wong
2024-01-08 17:12 ` Darrick J. Wong
2023-12-31 20:35 ` [PATCH 2/6] xfs: use atomic extent swapping to fix user file fork data Darrick J. Wong
2023-12-31 20:35 ` [PATCH 3/6] xfs: repair extended attributes Darrick J. Wong
2023-12-31 20:35 ` [PATCH 4/6] xfs: scrub should set preen if attr leaf has holes Darrick J. Wong
2023-12-31 20:36 ` [PATCH 5/6] xfs: flag empty xattr leaf blocks for optimization Darrick J. Wong
2023-12-31 20:36 ` [PATCH 6/6] xfs: create an xattr iteration function for scrub Darrick J. Wong
2023-12-31 19:30 ` [PATCHSET v29.0 21/28] xfs: online repair of inode unlinked state Darrick J. Wong
2023-12-31 20:36 ` [PATCH 1/2] xfs: ensure unlinked list state is consistent with nlink during scrub Darrick J. Wong
2023-12-31 20:37 ` [PATCH 2/2] xfs: update the unlinked list when repairing link counts Darrick J. Wong
2023-12-31 19:31 ` [PATCHSET v29.0 22/28] xfs: online repair of directories Darrick J. Wong
2023-12-31 20:37 ` [PATCH 1/4] " Darrick J. Wong
2023-12-31 20:37 ` [PATCH 2/4] xfs: scan the filesystem to repair a directory dotdot entry Darrick J. Wong
2023-12-31 20:37 ` [PATCH 3/4] xfs: online repair of parent pointers Darrick J. Wong
2023-12-31 20:38 ` [PATCH 4/4] xfs: ask the dentry cache if it knows the parent of a directory Darrick J. Wong
2023-12-31 19:31 ` [PATCHSET v29.0 23/28] xfs: move orphan files to lost and found Darrick J. Wong
2023-12-31 20:38 ` [PATCH 1/3] xfs: move orphan files to the orphanage Darrick J. Wong
2023-12-31 20:38 ` [PATCH 2/3] xfs: move files to orphanage instead of letting nlinks drop to zero Darrick J. Wong
2023-12-31 20:38 ` [PATCH 3/3] xfs: ensure dentry consistency when the orphanage adopts a file Darrick J. Wong
2023-12-31 19:31 ` [PATCHSET v29.0 24/28] xfs: online repair of symbolic links Darrick J. Wong
2023-12-31 20:39 ` [PATCH 1/1] " Darrick J. Wong
2023-12-31 19:31 ` [PATCHSET v29.0 25/28] xfs: online fsck of iunlink buckets Darrick J. Wong
2023-12-31 20:39 ` [PATCH 1/3] xfs: check AGI unlinked inode buckets Darrick J. Wong
2023-12-31 20:39 ` [PATCH 2/3] xfs: hoist AGI repair context to a heap object Darrick J. Wong
2023-12-31 20:39 ` [PATCH 3/3] xfs: repair AGI unlinked inode bucket lists Darrick J. Wong
2023-12-31 19:32 ` [PATCHSET v29.0 26/28] xfs: cache xfile pages for better performance Darrick J. Wong
2023-12-31 20:40 ` [PATCH 1/3] xfs: map xfile pages directly into xfs_buf Darrick J. Wong
2023-12-31 20:40 ` [PATCH 2/3] xfs: use b_offset to support direct-mapping pages when blocksize < pagesize Darrick J. Wong
2024-01-03 8:45 ` Christoph Hellwig
2024-01-04 1:27 ` Darrick J. Wong
2023-12-31 20:40 ` [PATCH 3/3] xfile: implement write caching Darrick J. Wong
2024-01-03 8:48 ` Christoph Hellwig
2024-01-04 1:33 ` Darrick J. Wong
2024-01-04 6:20 ` Christoph Hellwig
2024-01-04 7:20 ` Darrick J. Wong
2024-01-04 7:28 ` Christoph Hellwig
2024-01-04 7:34 ` Darrick J. Wong
2024-01-04 7:39 ` Christoph Hellwig
2024-01-04 17:59 ` Darrick J. Wong
2023-12-31 19:32 ` [PATCHSET v29.0 27/28] xfs: inode-related repair fixes Darrick J. Wong
2023-12-31 20:40 ` [PATCH 1/4] xfs: check unused nlink fields in the ondisk inode Darrick J. Wong
2023-12-31 20:41 ` [PATCH 2/4] xfs: try to avoid allocating from sick inode clusters Darrick J. Wong
2023-12-31 20:41 ` [PATCH 3/4] xfs: pin inodes that would otherwise overflow link count Darrick J. Wong
2023-12-31 20:41 ` [PATCH 4/4] xfs: create subordinate scrub contexts for xchk_metadata_inode_subtype Darrick J. Wong
2023-12-31 19:32 ` [PATCHSET v29.0 28/28] xfs: less heavy locks during fstrim Darrick J. Wong
2023-12-31 20:41 ` [PATCH 1/1] xfs: fix severe performance problems when fstrimming a subset of an AG Darrick J. Wong
2023-12-31 19:39 ` [PATCHSET v29.0 01/40] xfs_scrub: fix licensing and copyright notices Darrick J. Wong
2023-12-31 22:04 ` [PATCH 1/3] xfs_scrub: fix author and spdx headers on scrub/ files Darrick J. Wong
2024-01-05 4:49 ` Christoph Hellwig
2023-12-31 22:04 ` [PATCH 2/3] xfs_scrub: add missing license and copyright information Darrick J. Wong
2024-01-05 4:50 ` Christoph Hellwig
2024-01-06 0:34 ` Darrick J. Wong
2023-12-31 22:04 ` [PATCH 3/3] xfs_scrub: update copyright years for scrub/ files Darrick J. Wong
2024-01-05 4:50 ` Christoph Hellwig
2023-12-31 19:40 ` [PATCHSET 02/40] mkfs: scale shards on ssds Darrick J. Wong
2023-12-31 22:04 ` [PATCH 1/2] mkfs: allow sizing allocation groups for concurrency Darrick J. Wong
2024-01-05 4:51 ` Christoph Hellwig
2023-12-31 22:05 ` [PATCH 2/2] mkfs: allow sizing internal logs " Darrick J. Wong
2024-01-05 4:52 ` Christoph Hellwig
2023-12-31 19:40 ` [PATCHSET v29.0 03/40] xfs_scrub: scan metadata files in parallel Darrick J. Wong
2023-12-31 22:05 ` [PATCH 1/3] libfrog: rename XFROG_SCRUB_TYPE_* to XFROG_SCRUB_GROUP_* Darrick J. Wong
2024-01-05 4:52 ` Christoph Hellwig
2023-12-31 22:05 ` [PATCH 2/3] libfrog: promote XFROG_SCRUB_DESCR_SUMMARY to a scrub type Darrick J. Wong
2024-01-05 4:53 ` Christoph Hellwig
2023-12-31 22:05 ` [PATCH 3/3] xfs_scrub: scan whole-fs metadata files in parallel Darrick J. Wong
2024-01-05 4:53 ` Christoph Hellwig
2023-12-31 19:40 ` [PATCHSET v29.0 04/40] xfs: repair inode mode by scanning dirs Darrick J. Wong
2023-12-31 22:06 ` [PATCH 1/3] xfs: create a static name for the dot entry too Darrick J. Wong
2023-12-31 22:06 ` [PATCH 2/3] xfs: create a predicate to determine if two xfs_names are the same Darrick J. Wong
2023-12-31 22:06 ` [PATCH 3/3] xfs: create a macro for decoding ftypes in tracepoints Darrick J. Wong
2023-12-31 19:40 ` [PATCHSET v29.0 05/40] xfsprogs: online repair of quota counters Darrick J. Wong
2023-12-31 22:06 ` [PATCH 1/3] xfs: report the health of quota counts Darrick J. Wong
2023-12-31 22:07 ` [PATCH 2/3] libfrog: create a new scrub group for things requiring full inode scans Darrick J. Wong
2023-12-31 22:07 ` [PATCH 3/3] xfs: implement live quotacheck inode scan Darrick J. Wong
2023-12-31 19:41 ` [PATCHSET v29.0 06/40] xfs_repair: rebuild inode fork mappings Darrick J. Wong
2023-12-31 22:07 ` [PATCH 1/3] xfs_repair: push inode buf and dinode pointers all the way to inode fork processing Darrick J. Wong
2023-12-31 22:08 ` [PATCH 2/3] xfs_repair: sync bulkload data structures with kernel newbt code Darrick J. Wong
2023-12-31 22:08 ` [PATCH 3/3] xfs_repair: rebuild block mappings from rmapbt data Darrick J. Wong
2023-12-31 19:41 ` [PATCHSET 07/40] xfs_repair: support more than 4 billion records Darrick J. Wong
2023-12-31 22:08 ` [PATCH 1/8] xfs_db: add a bmbt inflation command Darrick J. Wong
2023-12-31 22:08 ` [PATCH 2/8] xfs_repair: slab and bag structs need to track more than 2^32 items Darrick J. Wong
2023-12-31 22:09 ` [PATCH 3/8] xfs_repair: support more than 2^32 rmapbt records per AG Darrick J. Wong
2023-12-31 22:09 ` [PATCH 4/8] xfs_repair: support more than 2^32 owners per physical block Darrick J. Wong
2023-12-31 22:09 ` [PATCH 5/8] xfs_repair: clean up lock resources Darrick J. Wong
2023-12-31 22:09 ` [PATCH 6/8] xfs_repair: constrain attr fork extent count Darrick J. Wong
2023-12-31 22:10 ` [PATCH 7/8] xfs_repair: don't create block maps for data files Darrick J. Wong
2023-12-31 22:10 ` [PATCH 8/8] xfs_repair: support more than INT_MAX block maps Darrick J. Wong
2023-12-31 19:41 ` [PATCHSET v29.0 08/40] xfsprogs: online repair of file link counts Darrick J. Wong
2023-12-31 22:10 ` [PATCH 1/3] xfs: report health of inode " Darrick J. Wong
2023-12-31 22:10 ` [PATCH 2/3] xfs: teach scrub to check file nlinks Darrick J. Wong
2023-12-31 22:11 ` [PATCH 3/3] xfs_scrub: use multiple threads to run in-kernel metadata scrubs that scan inodes Darrick J. Wong
2023-12-31 19:42 ` [PATCHSET v29.0 09/40] xfsprogs: report corruption to the health trackers Darrick J. Wong
2023-12-31 22:11 ` [PATCH 1/9] xfs: separate the marking of sick and checked metadata Darrick J. Wong
2023-12-31 22:11 ` [PATCH 2/9] xfs: report fs corruption errors to the health tracking system Darrick J. Wong
2023-12-31 22:11 ` [PATCH 3/9] xfs: report ag header " Darrick J. Wong
2023-12-31 22:12 ` [PATCH 4/9] xfs: report block map " Darrick J. Wong
2023-12-31 22:12 ` [PATCH 5/9] xfs: report btree block corruption errors to the health system Darrick J. Wong
2023-12-31 22:12 ` [PATCH 6/9] xfs: report dir/attr " Darrick J. Wong
2023-12-31 22:12 ` [PATCH 7/9] xfs: report inode " Darrick J. Wong
2023-12-31 22:13 ` [PATCH 8/9] xfs: report realtime metadata " Darrick J. Wong
2023-12-31 22:13 ` [PATCH 9/9] xfs: report XFS_IS_CORRUPT " Darrick J. Wong
2023-12-31 19:42 ` [PATCHSET v29.0 10/40] xfsprogs: indirect health reporting Darrick J. Wong
2023-12-31 22:13 ` [PATCH 1/4] xfs: add secondary and indirect classes to the health tracking system Darrick J. Wong
2023-12-31 22:14 ` [PATCH 2/4] xfs: remember sick inodes that get inactivated Darrick J. Wong
2023-12-31 22:14 ` [PATCH 3/4] xfs: update health status if we get a clean bill of health Darrick J. Wong
2023-12-31 22:14 ` [PATCH 4/4] xfs_scrub: upload clean bills " Darrick J. Wong
2023-12-31 19:42 ` [PATCHSET v29.0 11/40] xfsprogs: support in-memory btrees Darrick J. Wong
2023-12-31 22:14 ` [PATCH 01/10] libxfs: clean up xfs_da_unmount usage Darrick J. Wong
2023-12-31 22:15 ` [PATCH 02/10] libxfs: teach buftargs to maintain their own buffer hashtable Darrick J. Wong
2023-12-31 22:15 ` [PATCH 03/10] libxfs: add xfile support Darrick J. Wong
2023-12-31 22:15 ` [PATCH 04/10] xfs: teach buftargs to maintain their own buffer hashtable Darrick J. Wong
2023-12-31 22:15 ` [PATCH 05/10] libxfs: support in-memory buffer cache targets Darrick J. Wong
2023-12-31 22:16 ` [PATCH 06/10] xfs: consolidate btree block freeing tracepoints Darrick J. Wong
2023-12-31 22:16 ` [PATCH 07/10] xfs: consolidate btree block allocation tracepoints Darrick J. Wong
2023-12-31 22:16 ` [PATCH 08/10] xfs: support in-memory btrees Darrick J. Wong
2023-12-31 22:16 ` [PATCH 09/10] xfs: connect in-memory btrees to xfiles Darrick J. Wong
2023-12-31 22:17 ` [PATCH 10/10] xfbtree: let the buffer cache flush dirty buffers to the xfile Darrick J. Wong
2023-12-31 19:42 ` [PATCHSET v29.0 12/40] xfsprogs: online repair of rmap btrees Darrick J. Wong
2023-12-31 22:17 ` [PATCH 1/4] xfs: create a helper to decide if a file mapping targets the rt volume Darrick J. Wong
2023-12-31 22:17 ` [PATCH 2/4] xfs: repair the rmapbt Darrick J. Wong
2023-12-31 22:17 ` [PATCH 3/4] xfs: create a shadow rmap btree during rmap repair Darrick J. Wong
2023-12-31 22:18 ` [PATCH 4/4] xfs: hook live rmap operations during a repair operation Darrick J. Wong
2023-12-31 19:43 ` [PATCHSET v29.0 13/40] xfs_repair: use in-memory rmap btrees Darrick J. Wong
2023-12-31 22:18 ` [PATCH 1/6] libxfs: partition memfd files to avoid using too many fds Darrick J. Wong
2023-12-31 22:18 ` [PATCH 2/6] xfs_repair: convert regular rmap repair to use in-memory btrees Darrick J. Wong
2023-12-31 22:18 ` [PATCH 3/6] xfs_repair: verify on-disk rmap btrees with in-memory btree data Darrick J. Wong
2023-12-31 22:19 ` [PATCH 4/6] xfs_repair: compute refcount data from in-memory rmap btrees Darrick J. Wong
2023-12-31 22:19 ` [PATCH 5/6] xfs_repair: reduce rmap bag memory usage when creating refcounts Darrick J. Wong
2023-12-31 22:19 ` [PATCH 6/6] xfs_repair: remove the old rmap collection slabs Darrick J. Wong
2023-12-31 19:43 ` [PATCHSET v29.0 14/40] xfsprogs: move btree geometry to ops struct Darrick J. Wong
2023-12-31 22:20 ` [PATCH 1/9] xfs: set the btree cursor bc_ops in xfs_btree_alloc_cursor Darrick J. Wong
2023-12-31 22:20 ` [PATCH 2/9] xfs: encode the default bc_flags in the btree ops structure Darrick J. Wong
2023-12-31 22:20 ` [PATCH 3/9] xfs: export some of the btree ops structures Darrick J. Wong
2023-12-31 22:20 ` [PATCH 4/9] xfs: initialize btree blocks using btree_ops structure Darrick J. Wong
2023-12-31 22:21 ` [PATCH 5/9] xfs: rename btree block/buffer init functions Darrick J. Wong
2023-12-31 22:21 ` [PATCH 6/9] xfs: btree convert xfs_btree_init_block to xfs_btree_init_buf calls Darrick J. Wong
2023-12-31 22:21 ` [PATCH 7/9] xfs: remove the unnecessary daddr paramter to _init_block Darrick J. Wong
2023-12-31 22:21 ` [PATCH 8/9] xfs: set btree block buffer ops in _init_buf Darrick J. Wong
2023-12-31 22:22 ` [PATCH 9/9] xfs: remove unnecessary fields in xfbtree_config Darrick J. Wong
2023-12-31 19:43 ` [PATCHSET v29.0 15/40] xfs_repair: reduce refcount repair memory usage Darrick J. Wong
2023-12-31 22:22 ` [PATCH 1/6] xfs: move lru refs to the btree ops structure Darrick J. Wong
2023-12-31 22:22 ` [PATCH 2/6] xfs: define an in-memory btree for storing refcount bag info during repairs Darrick J. Wong
2023-12-31 22:22 ` [PATCH 3/6] xfs_repair: define an in-memory btree for storing refcount bag info Darrick J. Wong
2023-12-31 22:23 ` [PATCH 4/6] xfs_repair: create refcount bag Darrick J. Wong
2023-12-31 22:23 ` [PATCH 5/6] xfs_repair: port to the new refcount bag structure Darrick J. Wong
2023-12-31 22:23 ` [PATCH 6/6] xfs_repair: remove the old bag implementation Darrick J. Wong
2023-12-31 19:43 ` [PATCHSET v29.0 16/40] xfsprogs: bmap log intent cleanups Darrick J. Wong
2023-12-31 22:23 ` [PATCH 1/5] xfs: clean up bmap log intent item tracepoint callsites Darrick J. Wong
2023-12-31 22:24 ` [PATCH 2/5] xfs: add a bi_entry helper Darrick J. Wong
2023-12-31 22:24 ` [PATCH 3/5] xfs: reuse xfs_bmap_update_cancel_item Darrick J. Wong
2023-12-31 22:24 ` [PATCH 4/5] xfs: move xfs_bmap_defer_add to xfs_bmap_item.c Darrick J. Wong
2023-12-31 22:24 ` [PATCH 5/5] xfs: add a xattr_entry helper Darrick J. Wong
2023-12-31 19:44 ` [PATCHSET v29.0 17/40] xfsprogs: widen BUI formats to support realtime Darrick J. Wong
2023-12-31 22:25 ` [PATCH 1/2] xfs: fix xfs_bunmapi to allow unmapping of partial rt extents Darrick J. Wong
2023-12-31 22:25 ` [PATCH 2/2] xfs: add a realtime flag to the bmap update log redo items Darrick J. Wong
2023-12-31 19:44 ` [PATCHSET v29.0 18/40] xfsprogs: support attrfork and unwritten BUIs Darrick J. Wong
2023-12-31 22:25 ` [PATCH 1/2] xfs: support deferred bmap updates on the attr fork Darrick J. Wong
2023-12-31 22:26 ` [PATCH 2/2] xfs: xfs_bmap_finish_one should map unwritten extents properly Darrick J. Wong
2023-12-31 19:44 ` [PATCHSET v29.0 19/40] xfsprogs: clean up symbolic link code Darrick J. Wong
2023-12-31 22:26 ` [PATCH 1/4] xfs: move xfs_symlink_remote.c declarations to xfs_symlink_remote.h Darrick J. Wong
2023-12-31 22:26 ` [PATCH 2/4] xfs: move remote symlink target read function to libxfs Darrick J. Wong
2023-12-31 22:26 ` [PATCH 3/4] xfs: move symlink target write " Darrick J. Wong
2023-12-31 22:27 ` [PATCH 4/4] mkfs: use libxfs to create symlinks Darrick J. Wong
2023-12-31 19:44 ` [PATCHSET v29.0 20/40] xfsprogs: atomic file updates Darrick J. Wong
2023-12-31 22:27 ` [PATCH 01/20] xfs: add a libxfs header file for staging new ioctls Darrick J. Wong
2023-12-31 22:27 ` [PATCH 02/20] xfs: introduce new file range exchange ioctl Darrick J. Wong
2023-12-31 22:27 ` [PATCH 03/20] xfs: parameterize all the incompat log feature helpers Darrick J. Wong
2023-12-31 22:28 ` [PATCH 04/20] xfs: create a log incompat flag for atomic extent swapping Darrick J. Wong
2023-12-31 22:28 ` [PATCH 05/20] xfs: introduce a swap-extent log intent item Darrick J. Wong
2023-12-31 22:28 ` [PATCH 06/20] xfs: create deferred log items for extent swapping Darrick J. Wong
2023-12-31 22:28 ` [PATCH 07/20] xfs: add error injection to test swapext recovery Darrick J. Wong
2023-12-31 22:29 ` [PATCH 08/20] xfs: condense extended attributes after an atomic swap Darrick J. Wong
2023-12-31 22:29 ` [PATCH 09/20] xfs: condense directories " Darrick J. Wong
2023-12-31 22:29 ` [PATCH 10/20] xfs: condense symbolic links " Darrick J. Wong
2023-12-31 22:29 ` [PATCH 11/20] xfs: make atomic extent swapping support realtime files Darrick J. Wong
2023-12-31 22:30 ` [PATCH 12/20] xfs: enable atomic swapext feature Darrick J. Wong
2023-12-31 22:30 ` [PATCH 13/20] libhandle: add support for bulkstat v5 Darrick J. Wong
2023-12-31 22:30 ` [PATCH 14/20] libfrog: convert xfs_io swapext command to use new libfrog wrapper Darrick J. Wong
2023-12-31 22:30 ` [PATCH 15/20] xfs_logprint: support dumping swapext log items Darrick J. Wong
2023-12-31 22:31 ` [PATCH 16/20] xfs_fsr: convert to bulkstat v5 ioctls Darrick J. Wong
2023-12-31 22:31 ` [PATCH 17/20] xfs_fsr: port to new swapext library function Darrick J. Wong
2023-12-31 22:31 ` [PATCH 18/20] xfs_fsr: skip the xattr/forkoff levering with the newer swapext implementations Darrick J. Wong
2023-12-31 22:32 ` [PATCH 19/20] xfs_io: enhance swapext to take advantage of new api Darrick J. Wong
2023-12-31 22:32 ` [PATCH 20/20] xfs_io: add atomic update commands to exercise extent swapping Darrick J. Wong
2023-12-31 19:45 ` [PATCHSET v29.0 21/40] xfsprogs: set and validate dir/attr block owners Darrick J. Wong
2023-12-31 22:32 ` [PATCH 1/9] xfs: add an explicit owner field to xfs_da_args Darrick J. Wong
2023-12-31 22:32 ` [PATCH 2/9] xfs: use the xfs_da_args owner field to set new dir/attr block owner Darrick J. Wong
2023-12-31 22:33 ` [PATCH 3/9] xfs: validate attr leaf buffer owners Darrick J. Wong
2023-12-31 22:33 ` [PATCH 4/9] xfs: validate attr remote value " Darrick J. Wong
2023-12-31 22:33 ` [PATCH 5/9] xfs: validate dabtree node " Darrick J. Wong
2023-12-31 22:33 ` [PATCH 6/9] xfs: validate directory leaf " Darrick J. Wong
2023-12-31 22:34 ` [PATCH 7/9] xfs: validate explicit directory data " Darrick J. Wong
2023-12-31 22:34 ` [PATCH 8/9] xfs: validate explicit directory block " Darrick J. Wong
2023-12-31 22:34 ` [PATCH 9/9] xfs: validate explicit directory free block owners Darrick J. Wong
2023-12-31 19:45 ` [PATCHSET v29.0 22/40] xfsprogs: online repair of extended attributes Darrick J. Wong
2023-12-31 22:34 ` [PATCH 1/1] xfs: repair " Darrick J. Wong
2023-12-31 19:45 ` [PATCHSET v29.0 23/40] xfsprogs: online repair of symbolic links Darrick J. Wong
2023-12-31 22:35 ` [PATCH 1/1] xfs: " Darrick J. Wong
2023-12-31 19:45 ` [PATCHSET v29.0 24/40] libxfs: cache xfile pages for better performance Darrick J. Wong
2023-12-31 22:35 ` [PATCH 1/1] xfs: map xfile pages directly into xfs_buf Darrick J. Wong
2024-01-03 8:24 ` Christoph Hellwig
2024-01-03 8:44 ` Christoph Hellwig
2023-12-31 19:46 ` [PATCHSET v29.0 25/40] xfsprogs: inode-related repair fixes Darrick J. Wong
2023-12-31 22:35 ` [PATCH 1/4] xfs: check unused nlink fields in the ondisk inode Darrick J. Wong
2023-12-31 22:35 ` [PATCH 2/4] xfs: try to avoid allocating from sick inode clusters Darrick J. Wong
2023-12-31 22:36 ` [PATCH 3/4] libxfs: port the bumplink function from the kernel Darrick J. Wong
2023-12-31 22:36 ` [PATCH 4/4] xfs: pin inodes that would otherwise overflow link count Darrick J. Wong
2023-12-31 19:46 ` [PATCHSET v29.0 26/40] xfs_scrub: fixes to the repair code Darrick J. Wong
2023-12-31 22:36 ` [PATCH 1/7] xfs_scrub: flush stdout after printing to it Darrick J. Wong
2024-01-05 4:55 ` Christoph Hellwig
2023-12-31 22:36 ` [PATCH 2/7] xfs_scrub: don't report media errors for space with unknowable owner Darrick J. Wong
2024-01-05 4:56 ` Christoph Hellwig
2023-12-31 22:37 ` [PATCH 3/7] xfs_scrub: remove ALP_* flags namespace Darrick J. Wong
2024-01-05 4:56 ` Christoph Hellwig
2023-12-31 22:37 ` [PATCH 4/7] xfs_scrub: move repair functions to repair.c Darrick J. Wong
2024-01-05 4:56 ` Christoph Hellwig
2023-12-31 22:37 ` [PATCH 5/7] xfs_scrub: log when a repair was unnecessary Darrick J. Wong
2024-01-05 4:57 ` Christoph Hellwig
2023-12-31 22:38 ` [PATCH 6/7] xfs_scrub: require primary superblock repairs to complete before proceeding Darrick J. Wong
2024-01-05 4:57 ` Christoph Hellwig
2023-12-31 22:38 ` [PATCH 7/7] xfs_scrub: actually try to fix summary counters ahead of repairs Darrick J. Wong
2024-01-05 4:57 ` Christoph Hellwig
2023-12-31 19:46 ` [PATCHSET v29.0 27/40] xfs_scrub: improve warnings about difficult repairs Darrick J. Wong
2023-12-31 22:38 ` [PATCH 1/8] xfs_scrub: fix missing scrub coverage for broken inodes Darrick J. Wong
2024-01-05 4:58 ` Christoph Hellwig
2023-12-31 22:38 ` [PATCH 2/8] xfs_scrub: collapse trivial superblock scrub helpers Darrick J. Wong
2024-01-05 4:58 ` Christoph Hellwig
2023-12-31 22:39 ` [PATCH 3/8] xfs_scrub: get rid of trivial fs metadata scanner helpers Darrick J. Wong
2024-01-05 4:58 ` Christoph Hellwig
2023-12-31 22:39 ` [PATCH 4/8] xfs_scrub: split up the mustfix repairs and difficulty assessment functions Darrick J. Wong
2024-01-05 4:59 ` Christoph Hellwig
2023-12-31 22:39 ` [PATCH 5/8] xfs_scrub: add missing repair types to the mustfix and difficulty assessment Darrick J. Wong
2024-01-05 4:59 ` Christoph Hellwig
2023-12-31 22:39 ` [PATCH 6/8] xfs_scrub: any inconsistency in metadata should trigger difficulty warnings Darrick J. Wong
2024-01-05 4:59 ` Christoph Hellwig
2023-12-31 22:40 ` [PATCH 7/8] xfs_scrub: warn about difficult repairs to rt and quota metadata Darrick J. Wong
2024-01-05 5:00 ` Christoph Hellwig
2023-12-31 22:40 ` [PATCH 8/8] xfs_scrub: enable users to bump information messages to warnings Darrick J. Wong
2024-01-05 5:00 ` Christoph Hellwig
2023-12-31 19:46 ` [PATCHSET v29.0 28/40] xfs_scrub: track data dependencies for repairs Darrick J. Wong
2023-12-31 22:40 ` [PATCH 1/9] xfs_scrub: track repair items by principal, not by individual repairs Darrick J. Wong
2024-01-05 5:01 ` Christoph Hellwig
2023-12-31 22:40 ` [PATCH 2/9] xfs_scrub: use repair_item to direct repair activities Darrick J. Wong
2024-01-05 5:01 ` Christoph Hellwig
2023-12-31 22:41 ` [PATCH 3/9] xfs_scrub: remove action lists from phaseX code Darrick J. Wong
2024-01-05 5:02 ` Christoph Hellwig
2023-12-31 22:41 ` [PATCH 4/9] xfs_scrub: remove scrub_metadata_file Darrick J. Wong
2024-01-05 5:02 ` Christoph Hellwig
2023-12-31 22:41 ` [PATCH 5/9] xfs_scrub: boost the repair priority of dependencies of damaged items Darrick J. Wong
2024-01-05 5:02 ` Christoph Hellwig
2023-12-31 22:41 ` [PATCH 6/9] xfs_scrub: clean up repair_item_difficulty a little Darrick J. Wong
2024-01-05 5:03 ` Christoph Hellwig
2023-12-31 22:42 ` [PATCH 7/9] xfs_scrub: check dependencies of a scrub type before repairing Darrick J. Wong
2024-01-05 5:03 ` Christoph Hellwig
2023-12-31 22:42 ` [PATCH 8/9] xfs_scrub: retry incomplete repairs Darrick J. Wong
2024-01-05 5:03 ` Christoph Hellwig
2023-12-31 22:42 ` [PATCH 9/9] xfs_scrub: remove unused action_list fields Darrick J. Wong
2024-01-05 5:04 ` Christoph Hellwig
2023-12-31 19:47 ` [PATCHSET v29.0 29/40] xfs_scrub: use scrub_item to track check progress Darrick J. Wong
2023-12-31 22:42 ` [PATCH 1/5] xfs_scrub: start tracking scrub state in scrub_item Darrick J. Wong
2024-01-05 5:04 ` Christoph Hellwig
2023-12-31 22:43 ` [PATCH 2/5] xfs_scrub: remove enum check_outcome Darrick J. Wong
2024-01-05 5:05 ` Christoph Hellwig
2023-12-31 22:43 ` [PATCH 3/5] xfs_scrub: refactor scrub_meta_type out of existence Darrick J. Wong
2024-01-05 5:05 ` Christoph Hellwig
2023-12-31 22:43 ` [PATCH 4/5] xfs_scrub: hoist repair retry loop to repair_item_class Darrick J. Wong
2024-01-05 5:05 ` Christoph Hellwig
2023-12-31 22:44 ` [PATCH 5/5] xfs_scrub: hoist scrub retry loop to scrub_item_check_file Darrick J. Wong
2024-01-05 5:06 ` Christoph Hellwig
2023-12-31 19:47 ` [PATCHSET v29.0 30/40] xfs_scrub: improve scheduling of repair items Darrick J. Wong
2023-12-31 22:44 ` [PATCH 1/4] libfrog: enhance ptvar to support initializer functions Darrick J. Wong
2024-01-05 5:08 ` Christoph Hellwig
2023-12-31 22:44 ` [PATCH 2/4] xfs_scrub: improve thread scheduling repair items during phase 4 Darrick J. Wong
2024-01-05 5:08 ` Christoph Hellwig
2023-12-31 22:44 ` [PATCH 3/4] xfs_scrub: recheck entire metadata objects after corruption repairs Darrick J. Wong
2024-01-05 5:08 ` Christoph Hellwig
2023-12-31 22:45 ` [PATCH 4/4] xfs_scrub: try to repair space metadata before file metadata Darrick J. Wong
2024-01-05 5:09 ` Christoph Hellwig
2023-12-31 19:47 ` [PATCHSET v29.0 31/40] xfs_scrub: detect deceptive filename extensions Darrick J. Wong
2023-12-31 22:45 ` [PATCH 01/13] xfs_scrub: use proper UChar string iterators Darrick J. Wong
2023-12-31 22:45 ` [PATCH 02/13] xfs_scrub: hoist code that removes ignorable characters Darrick J. Wong
2023-12-31 22:45 ` [PATCH 03/13] xfs_scrub: add a couple of omitted invisible code points Darrick J. Wong
2023-12-31 22:46 ` [PATCH 04/13] xfs_scrub: avoid potential UAF after freeing a duplicate name entry Darrick J. Wong
2023-12-31 22:46 ` [PATCH 05/13] xfs_scrub: guard against libicu returning negative buffer lengths Darrick J. Wong
2023-12-31 22:46 ` [PATCH 06/13] xfs_scrub: hoist non-rendering character predicate Darrick J. Wong
2023-12-31 22:46 ` [PATCH 07/13] xfs_scrub: store bad flags with the name entry Darrick J. Wong
2023-12-31 22:47 ` [PATCH 08/13] xfs_scrub: rename UNICRASH_ZERO_WIDTH to UNICRASH_INVISIBLE Darrick J. Wong
2023-12-31 22:47 ` [PATCH 09/13] xfs_scrub: type-coerce the UNICRASH_* flags Darrick J. Wong
2023-12-31 22:47 ` [PATCH 10/13] xfs_scrub: reduce size of struct name_entry Darrick J. Wong
2023-12-31 22:47 ` [PATCH 11/13] xfs_scrub: rename struct unicrash.normalizer Darrick J. Wong
2023-12-31 22:48 ` [PATCH 12/13] xfs_scrub: report deceptive file extensions Darrick J. Wong
2023-12-31 22:48 ` [PATCH 13/13] xfs_scrub: dump unicode points Darrick J. Wong
2023-12-31 19:48 ` [PATCHSET v29.0 32/40] xfs_scrub: move fstrim to a separate phase Darrick J. Wong
2023-12-31 22:48 ` [PATCH 1/8] xfs_scrub: move FITRIM to phase 8 Darrick J. Wong
2023-12-31 22:48 ` [PATCH 2/8] xfs_scrub: ignore phase 8 if the user disabled fstrim Darrick J. Wong
2023-12-31 22:49 ` [PATCH 3/8] xfs_scrub: collapse trim_filesystem Darrick J. Wong
2023-12-31 22:49 ` [PATCH 4/8] xfs_scrub: fix the work estimation for phase 8 Darrick J. Wong
2023-12-31 22:49 ` [PATCH 5/8] xfs_scrub: report FITRIM errors properly Darrick J. Wong
2023-12-31 22:49 ` [PATCH 6/8] xfs_scrub: don't call FITRIM after runtime errors Darrick J. Wong
2023-12-31 22:50 ` [PATCH 7/8] xfs_scrub: don't trim the first agbno of each AG for better performance Darrick J. Wong
2023-12-31 22:50 ` [PATCH 8/8] xfs_scrub: improve progress meter for phase 8 fstrimming Darrick J. Wong
2023-12-31 19:48 ` [PATCHSET v29.0 33/40] xfs_scrub: use free space histograms to reduce fstrim runtime Darrick J. Wong
2023-12-31 22:50 ` [PATCH 1/7] libfrog: hoist free space histogram code Darrick J. Wong
2023-12-31 22:51 ` [PATCH 2/7] libfrog: print wider columns for free space histogram Darrick J. Wong
2023-12-31 22:51 ` [PATCH 3/7] libfrog: print cdf of free space buckets Darrick J. Wong
2023-12-31 22:51 ` [PATCH 4/7] xfs_scrub: don't close stdout when closing the progress bar Darrick J. Wong
2023-12-31 22:51 ` [PATCH 5/7] xfs_scrub: remove pointless spacemap.c arguments Darrick J. Wong
2023-12-31 22:52 ` [PATCH 6/7] xfs_scrub: collect free space histograms during phase 7 Darrick J. Wong
2023-12-31 22:52 ` [PATCH 7/7] xfs_scrub: tune fstrim minlen parameter based on free space histograms Darrick J. Wong
2023-12-31 19:48 ` [PATCHSET v29.0 34/40] xfs_scrub: fixes for systemd services Darrick J. Wong
2023-12-31 20:25 ` Neal Gompa
2024-01-03 1:23 ` Darrick J. Wong
2023-12-31 22:52 ` [PATCH 1/9] debian: install scrub services with dh_installsystemd Darrick J. Wong
2023-12-31 22:52 ` [PATCH 2/9] xfs_scrub_all: escape service names consistently Darrick J. Wong
2023-12-31 22:53 ` [PATCH 3/9] xfs_scrub: fix pathname escaping across all service definitions Darrick J. Wong
2023-12-31 22:53 ` [PATCH 4/9] xfs_scrub_fail: fix sendmail detection Darrick J. Wong
2023-12-31 22:53 ` [PATCH 5/9] xfs_scrub_fail: return the failure status of the mailer program Darrick J. Wong
2023-12-31 22:53 ` [PATCH 6/9] xfs_scrub_fail: add content type header to failure emails Darrick J. Wong
2024-01-05 5:09 ` Christoph Hellwig
2023-12-31 22:54 ` [PATCH 7/9] xfs_scrub_fail: advise recipients not to reply Darrick J. Wong
2024-01-05 5:10 ` Christoph Hellwig
2023-12-31 22:54 ` [PATCH 8/9] xfs_scrub_fail: move executable script to /usr/libexec Darrick J. Wong
2024-01-01 0:24 ` Neal Gompa
2024-01-03 1:26 ` Darrick J. Wong
2024-01-05 5:10 ` Christoph Hellwig
2023-12-31 22:54 ` [PATCH 9/9] xfs_scrub_all.cron: move to package data directory Darrick J. Wong
2024-01-03 2:01 ` Neal Gompa
2024-01-05 5:11 ` Christoph Hellwig
2024-01-02 10:48 ` [PATCHSET v29.0 34/40] xfs_scrub: fixes for systemd services Christoph Hellwig
2024-01-03 1:26 ` Darrick J. Wong
2023-12-31 19:48 ` [PATCHSET v29.0 35/40] xfs_scrub_all: " Darrick J. Wong
2023-12-31 22:54 ` [PATCH 1/4] xfs_scrub_all: fix argument passing when invoking xfs_scrub manually Darrick J. Wong
2023-12-31 22:55 ` [PATCH 2/4] xfs_scrub_all: survive systemd restarts when waiting for services Darrick J. Wong
2023-12-31 22:55 ` [PATCH 3/4] xfs_scrub_all: simplify cleanup of run_killable Darrick J. Wong
2023-12-31 22:55 ` [PATCH 4/4] xfs_scrub_all: fix termination signal handling Darrick J. Wong
2023-12-31 19:49 ` [PATCHSET v29.0 36/40] xfs_scrub: tighten security of systemd services Darrick J. Wong
2023-12-31 22:55 ` [PATCH 1/6] xfs_scrub: allow auxiliary pathnames for sandboxing Darrick J. Wong
2023-12-31 22:56 ` [PATCH 2/6] xfs_scrub.service: reduce CPU usage to 60% when possible Darrick J. Wong
2023-12-31 22:56 ` [PATCH 3/6] xfs_scrub: use dynamic users when running as a systemd service Darrick J. Wong
2023-12-31 22:56 ` [PATCH 4/6] xfs_scrub: tighten up the security on the background " Darrick J. Wong
2023-12-31 22:57 ` [PATCH 5/6] xfs_scrub_fail: " Darrick J. Wong
2023-12-31 22:57 ` [PATCH 6/6] xfs_scrub_all: " Darrick J. Wong
2023-12-31 19:49 ` [PATCHSET v29.0 37/40] xfs_scrub_all: automatic media scan service Darrick J. Wong
2023-12-31 22:57 ` [PATCH 1/6] xfs_scrub_all: only use the xfs_scrub@ systemd services in service mode Darrick J. Wong
2023-12-31 22:57 ` [PATCH 2/6] xfs_scrub_all: remove journalctl background process Darrick J. Wong
2023-12-31 22:58 ` [PATCH 3/6] xfs_scrub_all: support metadata+media scans of all filesystems Darrick J. Wong
2023-12-31 22:58 ` [PATCH 4/6] xfs_scrub_all: enable periodic file data scrubs automatically Darrick J. Wong
2023-12-31 22:58 ` [PATCH 5/6] xfs_scrub_all: trigger automatic media scans once per month Darrick J. Wong
2023-12-31 22:58 ` [PATCH 6/6] xfs_scrub_all: failure reporting for the xfs_scrub_all job Darrick J. Wong
2023-12-31 19:49 ` [PATCHSET v29.0 38/40] xfs_scrub_all: improve systemd handling Darrick J. Wong
2023-12-31 22:59 ` [PATCH 1/5] xfs_scrub_all: encapsulate all the subprocess code in an object Darrick J. Wong
2023-12-31 22:59 ` [PATCH 2/5] xfs_scrub_all: encapsulate all the systemctl " Darrick J. Wong
2023-12-31 22:59 ` [PATCH 3/5] xfs_scrub_all: add CLI option for easier debugging Darrick J. Wong
2023-12-31 22:59 ` [PATCH 4/5] xfs_scrub_all: convert systemctl calls to dbus Darrick J. Wong
2023-12-31 23:00 ` [PATCH 5/5] xfs_scrub_all: implement retry and backoff for dbus calls Darrick J. Wong
2023-12-31 19:49 ` [PATCHSET v29.0 39/40] xfs_scrub: automatic optimization by default Darrick J. Wong
2023-12-31 23:00 ` [PATCH 1/3] xfs_scrub: automatic downgrades to dry-run mode in service mode Darrick J. Wong
2023-12-31 23:00 ` [PATCH 2/3] xfs_scrub: add an optimization-only mode Darrick J. Wong
2023-12-31 23:00 ` [PATCH 3/3] debian: enable xfs_scrub systemd services by default Darrick J. Wong
2023-12-31 19:50 ` [PATCHSET 40/40] xfs_repair: add other v5 features to filesystems Darrick J. Wong
2023-12-31 23:01 ` [PATCH 1/4] xfs_repair: check free space requirements before allowing upgrades Darrick J. Wong
2023-12-31 23:01 ` [PATCH 2/4] xfs_repair: allow sysadmins to add free inode btree indexes Darrick J. Wong
2023-12-31 23:01 ` [PATCH 3/4] xfs_repair: allow sysadmins to add reflink Darrick J. Wong
2023-12-31 23:01 ` [PATCH 4/4] xfs_repair: allow sysadmins to add reverse mapping indexes Darrick J. Wong
2023-12-31 19:57 ` [PATCHSET 1/8] fstests: fuzz non-root dquots on xfs Darrick J. Wong
2023-12-27 13:42 ` [PATCH 1/3] fuzzy: mask off a few more inode fields from the fuzz tests Darrick J. Wong
2023-12-27 13:43 ` [PATCH 2/3] fuzzy: allow FUZZ_REWRITE_DURATION to control fsstress runtime when fuzzing Darrick J. Wong
2023-12-27 13:43 ` [PATCH 3/3] fuzzy: test other dquot ids Darrick J. Wong
2023-12-31 19:57 ` [PATCHSET 2/8] xfsprogs: scale shards on ssds Darrick J. Wong
2023-12-27 13:43 ` [PATCH 1/1] xfs: test scaling of the mkfs concurrency options Darrick J. Wong
2023-12-31 19:57 ` [PATCHSET v29.0 3/8] fstests: establish baseline for fuzz tests Darrick J. Wong
2023-12-27 13:43 ` [PATCH 1/4] xfs: online fuzz test known output Darrick J. Wong
2023-12-27 13:44 ` [PATCH 2/4] xfs: offline " Darrick J. Wong
2023-12-27 13:44 ` [PATCH 3/4] xfs: norepair " Darrick J. Wong
2023-12-27 13:44 ` [PATCH 4/4] xfs: bothrepair " Darrick J. Wong
2023-12-31 19:57 ` [PATCHSET v29.0 4/8] fstests: atomic file updates Darrick J. Wong
2023-12-27 13:44 ` [PATCH 1/1] swapext: make sure that we don't swap unwritten extents unless they're part of a rt extent(??) Darrick J. Wong
2023-12-31 19:58 ` [PATCHSET v29.0 5/8] fstests: detect deceptive filename extensions Darrick J. Wong
2023-12-27 13:45 ` [PATCH 1/2] generic/453: test confusable name detection with 32-bit unicode codepoints Darrick J. Wong
2023-12-27 13:45 ` [PATCH 2/2] generic/453: check xfs_scrub detection of confusing job offers Darrick J. Wong
2023-12-31 19:58 ` [PATCHSET v29.0 6/8] fstests: test systemd background services Darrick J. Wong
2023-12-27 13:45 ` [PATCH 1/1] xfs: test xfs_scrub services Darrick J. Wong
2023-12-31 19:58 ` [PATCHSET v29.0 7/8] fstests: use free space histograms to reduce fstrim runtime Darrick J. Wong
2023-12-27 13:45 ` [PATCH 1/1] xfs/004: fix column extraction code Darrick J. Wong
2023-12-31 19:58 ` [PATCHSET 8/8] fstests: test upgrading older features Darrick J. Wong
2023-12-27 13:46 ` [PATCH 1/1] xfs: test upgrading old features Darrick J. Wong
2023-12-31 20:02 ` [PATCHSET v29.0] xfs-documentation: atomic file updates Darrick J. Wong
2023-12-27 14:07 ` [PATCH 1/1] design: document atomic extent swap log intent structures Darrick J. Wong
-- strict thread matches above, loose matches on Subject: below --
2024-01-30 5:03 [PATCHSET v29.2 5/7] xfs: report corruption to the health trackers Darrick J. Wong
2024-01-30 5:12 ` [PATCH 11/11] xfs: report XFS_IS_CORRUPT errors to the health system Darrick J. Wong
2023-05-26 0:31 [PATCHSET v25.0 00/11] xfs: report corruption to the health trackers Darrick J. Wong
2023-05-26 1:03 ` [PATCH 11/11] xfs: report XFS_IS_CORRUPT errors to the health system Darrick J. Wong
2022-12-30 22:13 [PATCHSET v24.0 00/11] xfs: report corruption to the health trackers Darrick J. Wong
2022-12-30 22:13 ` [PATCH 11/11] xfs: report XFS_IS_CORRUPT errors to the health system 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=170404828458.1748329.17550485294904147495.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