summaryrefslogtreecommitdiff
path: root/fs/xfs/scrub/rtbitmap.c
diff options
context:
space:
mode:
authorDarrick J. Wong <djwong@kernel.org>2022-08-19 11:28:42 -0700
committerDarrick J. Wong <djwong@kernel.org>2022-11-09 19:07:29 -0800
commit82a4c586d6889700fd8f02722451fe4d1e7b7ede (patch)
treea6a2ae57870ae5eba7b8d162aa168025cdce6ab9 /fs/xfs/scrub/rtbitmap.c
parent59199afd0c6bc9f0ecb349698f46ccbf2d3c0063 (diff)
xfs: online repair of realtime bitmaps
Rebuild the realtime bitmap from the realtime rmap btree. Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Diffstat (limited to 'fs/xfs/scrub/rtbitmap.c')
-rw-r--r--fs/xfs/scrub/rtbitmap.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/xfs/scrub/rtbitmap.c b/fs/xfs/scrub/rtbitmap.c
index 851039588fe3..f08b6b379343 100644
--- a/fs/xfs/scrub/rtbitmap.c
+++ b/fs/xfs/scrub/rtbitmap.c
@@ -16,15 +16,23 @@
#include "xfs_bmap.h"
#include "scrub/scrub.h"
#include "scrub/common.h"
+#include "scrub/repair.h"
/* Set us up with the realtime metadata locked. */
int
xchk_setup_rtbitmap(
struct xfs_scrub *sc)
{
+ unsigned int resblks = 0;
int error;
- error = xchk_trans_alloc(sc, 0);
+ if (xchk_could_repair(sc)) {
+ error = xrep_setup_rtbitmap(sc, &resblks);
+ if (error)
+ return error;
+ }
+
+ error = xchk_trans_alloc(sc, resblks);
if (error)
return error;