]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/btree_write_buffer_types.h
Update bcachefs sources to eb83f1f842bb mean and variance: Promote to lib/math
[bcachefs-tools-debian] / libbcachefs / btree_write_buffer_types.h
index 9b9433de9c3686aa59255858e44411384219bafc..99993ba77aeab01a63470111e84db4c2ebc5afad 100644 (file)
@@ -2,56 +2,43 @@
 #ifndef _BCACHEFS_BTREE_WRITE_BUFFER_TYPES_H
 #define _BCACHEFS_BTREE_WRITE_BUFFER_TYPES_H
 
-#include "darray.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 wb_key_ref {
-union {
-       struct {
-#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-               unsigned                        idx:24;
-               u8                              pos[sizeof(struct bpos)];
-               enum btree_id                   btree:8;
-#else
-               enum btree_id                   btree:8;
-               u8                              pos[sizeof(struct bpos)];
-               unsigned                        idx:24;
-#endif
-       } __packed;
-       struct {
-#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-               u64 lo;
-               u64 mi;
-               u64 hi;
-#else
-               u64 hi;
-               u64 mi;
-               u64 lo;
-#endif
-       };
-};
-};
-
 struct btree_write_buffered_key {
-       enum btree_id                   btree:8;
-       u64                             journal_seq:56;
+       u64                     journal_seq;
+       unsigned                journal_offset;
+       enum btree_id           btree;
        __BKEY_PADDED(k, BTREE_WRITE_BUFERED_VAL_U64s_MAX);
 };
 
-struct btree_write_buffer_keys {
-       DARRAY(struct btree_write_buffered_key) keys;
-       struct journal_entry_pin        pin;
-       struct mutex                    lock;
+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 {
-       DARRAY(struct wb_key_ref)       sorted;
-       struct btree_write_buffer_keys  inc;
-       struct btree_write_buffer_keys  flushing;
-       struct work_struct              flush_work;
+       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 */