public inbox for linux-bcachefs@vger.kernel.org
 help / color / mirror / Atom feed
From: Kent Overstreet <kent.overstreet@linux.dev>
To: linux-bcachefs@vger.kernel.org
Cc: Kent Overstreet <kent.overstreet@linux.dev>, djwong@kernel.org
Subject: [PATCH 3/6] bcachefs: Mark recovery passses that are safe to run online
Date: Wed,  6 Dec 2023 15:33:07 -0500	[thread overview]
Message-ID: <20231206203313.2197302-4-kent.overstreet@linux.dev> (raw)
In-Reply-To: <20231206203313.2197302-1-kent.overstreet@linux.dev>

Online fsck is coming, and many of our recovery/fsck passes are already
safe to run while the filesystem is in use - mark which ones.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
---
 fs/bcachefs/recovery_types.h | 73 ++++++++++++++++++------------------
 1 file changed, 37 insertions(+), 36 deletions(-)

diff --git a/fs/bcachefs/recovery_types.h b/fs/bcachefs/recovery_types.h
index 515e3d62c2ac..3af29a2762c6 100644
--- a/fs/bcachefs/recovery_types.h
+++ b/fs/bcachefs/recovery_types.h
@@ -6,43 +6,44 @@
 #define PASS_FSCK		BIT(1)
 #define PASS_UNCLEAN		BIT(2)
 #define PASS_ALWAYS		BIT(3)
+#define PASS_ONLINE		BIT(4)
 
-#define BCH_RECOVERY_PASSES()									\
-	x(alloc_read,			PASS_ALWAYS)						\
-	x(stripes_read,			PASS_ALWAYS)						\
-	x(initialize_subvolumes,	0)							\
-	x(snapshots_read,		PASS_ALWAYS)						\
-	x(check_topology,		0)							\
-	x(check_allocations,		PASS_FSCK)						\
-	x(trans_mark_dev_sbs,		PASS_ALWAYS|PASS_SILENT)				\
-	x(fs_journal_alloc,		PASS_ALWAYS|PASS_SILENT)				\
-	x(set_may_go_rw,		PASS_ALWAYS|PASS_SILENT)				\
-	x(journal_replay,		PASS_ALWAYS)						\
-	x(check_alloc_info,		PASS_FSCK)						\
-	x(check_lrus,			PASS_FSCK)						\
-	x(check_btree_backpointers,	PASS_FSCK)						\
-	x(check_backpointers_to_extents,PASS_FSCK)						\
-	x(check_extents_to_backpointers,PASS_FSCK)						\
-	x(check_alloc_to_lru_refs,	PASS_FSCK)						\
-	x(fs_freespace_init,		PASS_ALWAYS|PASS_SILENT)				\
-	x(bucket_gens_init,		0)							\
-	x(check_snapshot_trees,		PASS_FSCK)						\
-	x(check_snapshots,		PASS_FSCK)						\
-	x(check_subvols,		PASS_FSCK)						\
-	x(delete_dead_snapshots,	PASS_FSCK)						\
-	x(fs_upgrade_for_subvolumes,	0)							\
-	x(resume_logged_ops,		PASS_ALWAYS)						\
-	x(check_inodes,			PASS_FSCK)						\
-	x(check_extents,		PASS_FSCK)						\
-	x(check_indirect_extents,	PASS_FSCK)						\
-	x(check_dirents,		PASS_FSCK)						\
-	x(check_xattrs,			PASS_FSCK)						\
-	x(check_root,			PASS_FSCK)						\
-	x(check_directory_structure,	PASS_FSCK)						\
-	x(check_nlinks,			PASS_FSCK)						\
-	x(delete_dead_inodes,		PASS_FSCK|PASS_UNCLEAN)					\
-	x(fix_reflink_p,		0)							\
-	x(set_fs_needs_rebalance,	0)							\
+#define BCH_RECOVERY_PASSES()							\
+	x(alloc_read,				PASS_ALWAYS)			\
+	x(stripes_read,				PASS_ALWAYS)			\
+	x(initialize_subvolumes,		0)				\
+	x(snapshots_read,			PASS_ALWAYS)			\
+	x(check_topology,			0)				\
+	x(check_allocations,			PASS_FSCK)			\
+	x(trans_mark_dev_sbs,			PASS_ALWAYS|PASS_SILENT)	\
+	x(fs_journal_alloc,			PASS_ALWAYS|PASS_SILENT)	\
+	x(set_may_go_rw,			PASS_ALWAYS|PASS_SILENT)	\
+	x(journal_replay,			PASS_ALWAYS)			\
+	x(check_alloc_info,			PASS_ONLINE|PASS_FSCK)		\
+	x(check_lrus,				PASS_ONLINE|PASS_FSCK)		\
+	x(check_btree_backpointers,		PASS_ONLINE|PASS_FSCK)		\
+	x(check_backpointers_to_extents,	PASS_ONLINE|PASS_FSCK)		\
+	x(check_extents_to_backpointers,	PASS_ONLINE|PASS_FSCK)		\
+	x(check_alloc_to_lru_refs,		PASS_ONLINE|PASS_FSCK)		\
+	x(fs_freespace_init,			PASS_ALWAYS|PASS_SILENT)	\
+	x(bucket_gens_init,			0)				\
+	x(check_snapshot_trees,			PASS_ONLINE|PASS_FSCK)		\
+	x(check_snapshots,			PASS_ONLINE|PASS_FSCK)		\
+	x(check_subvols,			PASS_ONLINE|PASS_FSCK)		\
+	x(delete_dead_snapshots,		PASS_ONLINE|PASS_FSCK)		\
+	x(fs_upgrade_for_subvolumes,		0)				\
+	x(resume_logged_ops,			PASS_ALWAYS)			\
+	x(check_inodes,				PASS_FSCK)			\
+	x(check_extents,			PASS_FSCK)			\
+	x(check_indirect_extents,		PASS_FSCK)			\
+	x(check_dirents,			PASS_FSCK)			\
+	x(check_xattrs,				PASS_FSCK)			\
+	x(check_root,				PASS_FSCK)			\
+	x(check_directory_structure,		PASS_FSCK)			\
+	x(check_nlinks,				PASS_FSCK)			\
+	x(delete_dead_inodes,			PASS_FSCK|PASS_UNCLEAN)		\
+	x(fix_reflink_p,			0)				\
+	x(set_fs_needs_rebalance,		0)				\
 
 enum bch_recovery_pass {
 #define x(n, when)	BCH_RECOVERY_PASS_##n,
-- 
2.42.0


  parent reply	other threads:[~2023-12-06 20:33 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-06 20:33 [PATCH 0/6] [RFC WIP] bcachefs: online fsck Kent Overstreet
2023-12-06 20:33 ` [PATCH 1/6] bcachefs: thread_with_file Kent Overstreet
2023-12-06 20:33 ` [PATCH 2/6] bcachefs: Add ability to redirect log output Kent Overstreet
2023-12-08 20:24   ` Brian Foster
2023-12-08 20:35     ` Kent Overstreet
2023-12-06 20:33 ` Kent Overstreet [this message]
2023-12-06 20:33 ` [PATCH 4/6] bcachefs: bch2_run_online_recovery_passes() Kent Overstreet
2023-12-08 20:25   ` Brian Foster
2023-12-08 20:34     ` Kent Overstreet
2023-12-06 20:33 ` [PATCH 5/6] bcachefs: BCH_IOCTL_FSCK_OFFLINE Kent Overstreet
2023-12-08 20:26   ` Brian Foster
2023-12-08 20:33     ` Kent Overstreet
2023-12-06 20:33 ` [PATCH 6/6] bcachefs: BCH_IOCTL_FSCK_ONLINE Kent Overstreet

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=20231206203313.2197302-4-kent.overstreet@linux.dev \
    --to=kent.overstreet@linux.dev \
    --cc=djwong@kernel.org \
    --cc=linux-bcachefs@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