summaryrefslogtreecommitdiff
path: root/fs/bcachefs/extents.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/extents.h')
-rw-r--r--fs/bcachefs/extents.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/fs/bcachefs/extents.h b/fs/bcachefs/extents.h
index ef2849e8b1f2..f2ef4da4c434 100644
--- a/fs/bcachefs/extents.h
+++ b/fs/bcachefs/extents.h
@@ -315,6 +315,15 @@ static inline struct bkey_ptrs_c bch2_bkey_ptrs_c(struct bkey_s_c k)
bkey_val_end(r),
};
}
+ case KEY_TYPE_extent_block_checksum: {
+ struct bkey_s_c_extent_block_checksum e =
+ bkey_s_c_to_extent_block_checksum(k);
+
+ return (struct bkey_ptrs_c) {
+ (void *) (e.v->_data + e.v->csum_u64s),
+ bkey_val_end(e),
+ };
+ }
default:
return (struct bkey_ptrs_c) { NULL, NULL };
}
@@ -420,6 +429,19 @@ enum merge_result bch2_extent_merge(struct bch_fs *,
.key_merge = bch2_extent_merge, \
}
+/* KEY_TYPE_extent_block_checksum */
+
+const char *bch2_extent_block_checksum_invalid(const struct bch_fs *,
+ struct bkey_s_c);
+void bch2_extent_block_checksum_to_text(struct printbuf *, struct bch_fs *,
+ struct bkey_s_c);
+
+#define bch2_bkey_ops_extent_block_checksum (struct bkey_ops) { \
+ .key_invalid = bch2_extent_block_checksum_invalid, \
+ .val_to_text = bch2_extent_block_checksum_to_text, \
+ .key_normalize = bch2_extent_normalize, \
+}
+
/* KEY_TYPE_reservation: */
const char *bch2_reservation_invalid(const struct bch_fs *, struct bkey_s_c);