diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-02-12 21:40:59 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-02-12 21:41:03 -0500 |
commit | e160e9b97986d908bce40ab40ee5d930453a3bf1 (patch) | |
tree | 5ca41b36845ed409c4f97ed94d601fb8a8859455 /libbcachefs/btree_write_buffer_types.h | |
parent | 157ea20eb26e214374e917813a78ecf6068db76e (diff) |
Update bcachefs sources to 3e0c5b0722 fixup! bcachefs: Btree write buffer
Diffstat (limited to 'libbcachefs/btree_write_buffer_types.h')
-rw-r--r-- | libbcachefs/btree_write_buffer_types.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libbcachefs/btree_write_buffer_types.h b/libbcachefs/btree_write_buffer_types.h new file mode 100644 index 00000000..99993ba7 --- /dev/null +++ b/libbcachefs/btree_write_buffer_types.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _BCACHEFS_BTREE_WRITE_BUFFER_TYPES_H +#define _BCACHEFS_BTREE_WRITE_BUFFER_TYPES_H + +#include "journal_types.h" + +#define BTREE_WRITE_BUFERED_VAL_U64s_MAX 4 +#define BTREE_WRITE_BUFERED_U64s_MAX (BKEY_U64s + BTREE_WRITE_BUFERED_VAL_U64s_MAX) + +struct btree_write_buffered_key { + u64 journal_seq; + unsigned journal_offset; + enum btree_id btree; + __BKEY_PADDED(k, BTREE_WRITE_BUFERED_VAL_U64s_MAX); +}; + +union btree_write_buffer_state { + struct { + atomic64_t counter; + }; + + struct { + u64 v; + }; + + struct { + u64 nr:23; + u64 idx:1; + u64 ref0:20; + u64 ref1:20; + }; +}; + +struct btree_write_buffer { + struct mutex flush_lock; + struct journal_entry_pin journal_pin; + + union btree_write_buffer_state state; + size_t size; + + struct btree_write_buffered_key *keys[2]; +}; + +#endif /* _BCACHEFS_BTREE_WRITE_BUFFER_TYPES_H */ |