summaryrefslogtreecommitdiffstats
path: root/fs/bcachefs/io_misc.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-09-10 19:11:47 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:10:12 -0400
commitf3e374efbf1e32fc0235d44abc68abae06a8f7ab (patch)
tree5c31a7e0533597c868cf8e5c9d0e19dc7ad0a38e /fs/bcachefs/io_misc.h
parentb030e262b517b6bddc4bfa88ed8d335ef9de7671 (diff)
downloadlinux-f3e374efbf1e32fc0235d44abc68abae06a8f7ab.tar.gz
linux-f3e374efbf1e32fc0235d44abc68abae06a8f7ab.tar.bz2
linux-f3e374efbf1e32fc0235d44abc68abae06a8f7ab.zip
bcachefs: Log finsert/fcollapse operations
Now that we have the logged operations btree, we can make finsert/fcollapse atomic w.r.t. unclean shutdown as well. This adds bch_logged_op_finsert to represent the state of an finsert or fcollapse, which is a bit more complicated than truncate since we need to track our position in the "shift extents" operation. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/io_misc.h')
-rw-r--r--fs/bcachefs/io_misc.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/bcachefs/io_misc.h b/fs/bcachefs/io_misc.h
index 1b792451fff2..c9e6ed40e1b8 100644
--- a/fs/bcachefs/io_misc.h
+++ b/fs/bcachefs/io_misc.h
@@ -19,6 +19,16 @@ void bch2_logged_op_truncate_to_text(struct printbuf *, struct bch_fs *, struct
int bch2_resume_logged_op_truncate(struct btree_trans *, struct bkey_i *);
int bch2_truncate(struct bch_fs *, subvol_inum, u64, u64 *);
+
+void bch2_logged_op_finsert_to_text(struct printbuf *, struct bch_fs *, struct bkey_s_c);
+
+#define bch2_bkey_ops_logged_op_finsert ((struct bkey_ops) { \
+ .val_to_text = bch2_logged_op_finsert_to_text, \
+ .min_val_size = 24, \
+})
+
+int bch2_resume_logged_op_finsert(struct btree_trans *, struct bkey_i *);
+
int bch2_fcollapse_finsert(struct bch_fs *, subvol_inum, u64, u64, bool, s64 *);
#endif /* _BCACHEFS_IO_MISC_H */