From: Samuel Just Date: Tue, 9 Mar 2021 03:57:03 +0000 (-0800) Subject: crimson/os/seastore/.../fltree_onode_manager: fill in delta recorder X-Git-Tag: v17.1.0~2678^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0c3bd0a8af8d1837e3408a013dcfd1ea2064fa43;p=ceph.git crimson/os/seastore/.../fltree_onode_manager: fill in delta recorder Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h b/src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h index f7e180e1b63d..48aeee7b98e2 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h @@ -28,6 +28,8 @@ struct FLTreeOnode : Onode, Value { template FLTreeOnode(T&&... args) : Value(std::forward(args)...) {} + + struct Recorder : public ValueDeltaRecorder { Recorder(bufferlist &bl) : ValueDeltaRecorder(bl) {} @@ -36,10 +38,19 @@ struct FLTreeOnode : Onode, Value { } void apply_value_delta( - ceph::bufferlist::const_iterator&, - NodeExtentMutable&, + ceph::bufferlist::const_iterator &bliter, + NodeExtentMutable &value, laddr_t) final { - // TODO + assert(value.get_length() == sizeof(onode_layout_t)); + bliter.copy(value.get_length(), value.get_write()); + } + + void record_delta(NodeExtentMutable &value) { + // TODO: probably could use versioning, etc + assert(value.get_length() == sizeof(onode_layout_t)); + ceph::buffer::ptr bptr(value.get_length()); + memcpy(bptr.c_str(), value.get_read(), value.get_length()); + get_encoded(value).append(bptr); } }; @@ -59,8 +70,9 @@ struct FLTreeOnode : Onode, Value { auto p = prepare_mutate_payload< onode_layout_t, Recorder>(t); + p.second->record_delta( + p.first); status = status_t::STABLE; - // TODO: fill in recorder } ~FLTreeOnode() final {}