]>
git.proxmox.com Git - ceph.git/blob - ceph/src/crimson/os/seastore/onode_manager/simple-fltree/onode_delta.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*-
2 // vim: ts=8 sw=2 smarttab
4 #include "onode_delta.h"
6 delta_t::delta_t(delta_t
&& delta
)
8 assert(op
== op_t::nop
);
11 oid
= std::move(delta
.oid
);
12 onode
= std::move(delta
.onode
);
13 keys
= std::move(delta
.keys
);
14 cells
= std::move(delta
.cells
);
18 delta_t
& delta_t::operator=(delta_t
&& delta
)
20 assert(op
== op_t::nop
);
23 oid
= std::move(delta
.oid
);
24 onode
= std::move(delta
.onode
);
25 keys
= std::move(delta
.keys
);
26 cells
= std::move(delta
.cells
);
31 delta_t
delta_t::nop()
33 return delta_t
{op_t::nop
};
36 delta_t
delta_t::insert_onode(unsigned slot
, const ghobject_t
& oid
, OnodeRef onode
)
38 delta_t delta
{op_t::insert_onode
};
45 delta_t
delta_t::update_onode(unsigned slot
, const ghobject_t
& oid
, OnodeRef onode
)
47 delta_t delta
{op_t::update_onode
};
54 delta_t
delta_t::insert_child(unsigned slot
,
55 const ghobject_t
& oid
,
56 crimson::os::seastore::laddr_t addr
)
58 delta_t delta
{op_t::insert_child
};
65 delta_t
delta_t::update_key(unsigned slot
, const ghobject_t
& oid
)
67 delta_t delta
{op_t::update_key
};
73 delta_t
delta_t::shift_left(unsigned n
)
75 delta_t delta
{op_t::shift_left
};
80 delta_t
delta_t::trim_right(unsigned n
)
82 delta_t delta
{op_t::trim_right
};
87 delta_t
delta_t::insert_front(ceph::buffer::ptr keys
,
88 ceph::buffer::ptr cells
)
90 delta_t delta
{op_t::insert_front
};
91 delta
.keys
= std::move(keys
);
92 delta
.cells
= std::move(cells
);
96 delta_t
delta_t::insert_back(ceph::buffer::ptr keys
,
97 ceph::buffer::ptr cells
)
99 delta_t delta
{op_t::insert_back
};
100 delta
.keys
= std::move(keys
);
101 delta
.cells
= std::move(cells
);
105 delta_t
delta_t::remove_from(unsigned slot
)
107 delta_t delta
{op_t::remove_from
};
112 void delta_t::encode(ceph::bufferlist
& bl
)
116 case op_t::insert_onode
:
118 case op_t::update_onode
:
119 // the slot # is not encoded, because we can alway figure it out
120 // when we have to replay the delta by looking the oid up in the
125 case op_t::insert_child
:
128 case op_t::update_key
:
132 case op_t::shift_left
:
135 case op_t::trim_right
:
138 case op_t::insert_front
:
140 case op_t::insert_back
:
145 case op_t::remove_from
:
149 assert(0 == "unknown onode op");
153 void delta_t::decode(ceph::bufferlist::const_iterator
& p
) {
157 case op_t::insert_onode
:
159 case op_t::update_onode
:
163 case op_t::insert_child
:
165 case op_t::update_key
:
169 case op_t::shift_left
:
172 case op_t::trim_right
:
175 case op_t::insert_front
:
177 case op_t::insert_back
:
182 case op_t::remove_from
:
186 assert(0 == "unknown onode op");