diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-09-10 16:42:30 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:10:12 -0400 |
commit | b030e262b517b6bddc4bfa88ed8d335ef9de7671 (patch) | |
tree | b0a1aea8f9773b926352e091f9d4a2c8ef31fcf5 /fs/bcachefs/logged_ops.h | |
parent | aaad530ac6b1c836de4a29d227ab68be97e39a73 (diff) | |
download | linux-b030e262b517b6bddc4bfa88ed8d335ef9de7671.tar.gz linux-b030e262b517b6bddc4bfa88ed8d335ef9de7671.tar.bz2 linux-b030e262b517b6bddc4bfa88ed8d335ef9de7671.zip |
bcachefs: Log truncate operations
Previously, we guaranteed atomicity of truncate after unclean shutdown
with the BCH_INODE_I_SIZE_DIRTY flag - which required a full scan of the
inodes btree.
Recently the deleted inodes btree was added so that we no longer have to
scan for deleted inodes, but truncate was unfinished and that change
left it broken.
This patch uses the new logged operations btree to fix truncate
atomicity; we now log an operation that can be replayed at the start of
a truncate.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/logged_ops.h')
-rw-r--r-- | fs/bcachefs/logged_ops.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/bcachefs/logged_ops.h b/fs/bcachefs/logged_ops.h index 9b758008c6bd..b2f2ebea54b6 100644 --- a/fs/bcachefs/logged_ops.h +++ b/fs/bcachefs/logged_ops.h @@ -4,7 +4,8 @@ #include "bkey.h" -#define BCH_LOGGED_OPS() +#define BCH_LOGGED_OPS() \ + x(truncate) static inline int bch2_logged_op_update(struct btree_trans *trans, struct bkey_i *op) { |