3 #include "crimson/os/cyan_collection.h"
4 #include "crimson/os/cyan_store.h"
5 #include "crimson/os/Transaction.h"
7 void OSDMeta::create(ceph::os::Transaction
& t
)
9 t
.create_collection(coll
->cid
, 0);
12 void OSDMeta::store_map(ceph::os::Transaction
& t
,
13 epoch_t e
, const bufferlist
& m
)
15 t
.write(coll
->cid
, osdmap_oid(e
), 0, m
.length(), m
);
18 seastar::future
<bufferlist
> OSDMeta::load_map(epoch_t e
)
20 return store
->read(coll
,
22 CEPH_OSD_OP_FLAG_FADVISE_WILLNEED
);
25 void OSDMeta::store_superblock(ceph::os::Transaction
& t
,
26 const OSDSuperblock
& superblock
)
29 encode(superblock
, bl
);
30 t
.write(coll
->cid
, superblock_oid(), 0, bl
.length(), bl
);
33 seastar::future
<OSDSuperblock
> OSDMeta::load_superblock()
35 return store
->read(coll
, superblock_oid(), 0, 0)
36 .then([this] (bufferlist
&& bl
) {
38 OSDSuperblock superblock
;
39 decode(superblock
, p
);
40 return seastar::make_ready_future
<OSDSuperblock
>(std::move(superblock
));
44 seastar::future
<pg_pool_t
,
46 OSDMeta::ec_profile_t
>
47 OSDMeta::load_final_pool_info(int64_t pool
) {
48 return store
->read(coll
, final_pool_info_oid(pool
),
49 0, 0).then([this] (bufferlist
&& bl
) {
53 ec_profile_t ec_profile
;
56 decode(ec_profile
, p
);
57 return seastar::make_ready_future
<pg_pool_t
,
59 ec_profile_t
>(std::move(pi
),
61 std::move(ec_profile
));
65 ghobject_t
OSDMeta::osdmap_oid(epoch_t epoch
)
67 string name
= fmt::format("osdmap.{}", epoch
);
68 return ghobject_t(hobject_t(sobject_t(object_t(name
), 0)));
71 ghobject_t
OSDMeta::final_pool_info_oid(int64_t pool
)
73 string name
= fmt::format("final_pool_{}", pool
);
74 return ghobject_t(hobject_t(sobject_t(object_t(name
), CEPH_NOSNAP
)));
77 ghobject_t
OSDMeta::superblock_oid()
79 return ghobject_t(hobject_t(sobject_t(object_t("osd_superblock"), 0)));