Forget all dirty_entries before stable big_write or delete during initialisation

This fixes a 'double_alloc' assertion in the following case:
- big_write object #1 v1 to block #100
- big_write object #1 v2 to block #101
- big_write object #2 v1 to block #100
This commit is contained in:
Vitaliy Filippov
2021-04-07 01:30:38 +03:00
parent 75a6a556b5
commit 307c1731c1
3 changed files with 33 additions and 9 deletions
+1 -1
View File
@@ -284,7 +284,7 @@ class blockstore_impl_t
// Stabilize
int dequeue_stable(blockstore_op_t *op);
int continue_stable(blockstore_op_t *op);
void mark_stable(const obj_ver_id & ov);
void mark_stable(const obj_ver_id & ov, bool forget_dirty = false);
void handle_stable_event(ring_data_t *data, blockstore_op_t *op);
void stabilize_object(object_id oid, uint64_t max_ver);