summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-06-07 16:35:42 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2024-06-23 12:57:13 -0400
commit7a0aa7d3ca9bddf925e1228eecd34ad0e63e6c70 (patch)
tree9f44ac28bde49eb0fa78e9c0b37f0a3f18a61926
parente5ee3dde6b907108c372e6ab600cc9d778c3af02 (diff)
bcachefs: add might_sleep() annotations for fsck_err()
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/error.c2
-rw-r--r--fs/bcachefs/error.h5
2 files changed, 6 insertions, 1 deletions
diff --git a/fs/bcachefs/error.c b/fs/bcachefs/error.c
index d95c40f1b6af..46cd9dcb48fc 100644
--- a/fs/bcachefs/error.c
+++ b/fs/bcachefs/error.c
@@ -210,6 +210,8 @@ int bch2_fsck_err(struct bch_fs *c,
int ret = -BCH_ERR_fsck_ignore;
const char *action_orig = "fix?", *action = action_orig;
+ might_sleep();
+
if (!WARN_ON(err >= ARRAY_SIZE(fsck_flags_extra)))
flags |= fsck_flags_extra[err];
diff --git a/fs/bcachefs/error.h b/fs/bcachefs/error.h
index 777711504c35..ba6a4f5257f4 100644
--- a/fs/bcachefs/error.h
+++ b/fs/bcachefs/error.h
@@ -136,7 +136,10 @@ void bch2_flush_fsck_errs(struct bch_fs *);
/* XXX: mark in superblock that filesystem contains errors, if we ignore: */
#define __fsck_err_on(cond, c, _flags, _err_type, ...) \
- (unlikely(cond) ? __fsck_err(c, _flags, _err_type, __VA_ARGS__) : false)
+({ \
+ might_sleep(); \
+ (unlikely(cond) ? __fsck_err(c, _flags, _err_type, __VA_ARGS__) : false);\
+}) \
#define need_fsck_err_on(cond, c, _err_type, ...) \
__fsck_err_on(cond, c, FSCK_CAN_IGNORE|FSCK_NEED_FSCK, _err_type, __VA_ARGS__)