mirror of
https://github.com/ceph/ceph
synced 2025-03-11 02:39:05 +00:00
crimson/osd: SnapMapper::record_purged_snaps() takes abstratced store and txn
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
This commit is contained in:
parent
3fef67bf36
commit
742cb2efb1
@ -6650,10 +6650,14 @@ void OSD::handle_get_purged_snaps_reply(MMonGetPurgedSnapsReply *m)
|
||||
if (!is_preboot() ||
|
||||
m->last < superblock.purged_snaps_last) {
|
||||
goto out;
|
||||
} else {
|
||||
OSDriver osdriver{store.get(), service.meta_ch, make_purged_snaps_oid()};
|
||||
SnapMapper::record_purged_snaps(
|
||||
cct,
|
||||
osdriver,
|
||||
osdriver.get_transaction(&t),
|
||||
m->purged_snaps);
|
||||
}
|
||||
SnapMapper::record_purged_snaps(cct, store.get(), service.meta_ch,
|
||||
make_purged_snaps_oid(), &t,
|
||||
m->purged_snaps);
|
||||
superblock.purged_snaps_last = m->last;
|
||||
write_superblock(t);
|
||||
store->queue_transaction(
|
||||
@ -8186,9 +8190,12 @@ void OSD::handle_osd_map(MOSDMap *m)
|
||||
|
||||
// record new purged_snaps
|
||||
if (superblock.purged_snaps_last == start - 1) {
|
||||
SnapMapper::record_purged_snaps(cct, store.get(), service.meta_ch,
|
||||
make_purged_snaps_oid(), &t,
|
||||
purged_snaps);
|
||||
OSDriver osdriver{store.get(), service.meta_ch, make_purged_snaps_oid()};
|
||||
SnapMapper::record_purged_snaps(
|
||||
cct,
|
||||
osdriver,
|
||||
osdriver.get_transaction(&t),
|
||||
purged_snaps);
|
||||
superblock.purged_snaps_last = last;
|
||||
} else {
|
||||
dout(10) << __func__ << " superblock purged_snaps_last is "
|
||||
|
@ -618,14 +618,11 @@ int SnapMapper::_lookup_purged_snap(
|
||||
|
||||
void SnapMapper::record_purged_snaps(
|
||||
CephContext *cct,
|
||||
ObjectStore *store,
|
||||
ObjectStore::CollectionHandle& ch,
|
||||
ghobject_t hoid,
|
||||
ObjectStore::Transaction *t,
|
||||
OSDriver& backend,
|
||||
OSDriver::OSTransaction&& txn,
|
||||
map<epoch_t,mempool::osdmap::map<int64_t,snap_interval_set_t>> purged_snaps)
|
||||
{
|
||||
dout(10) << __func__ << " purged_snaps " << purged_snaps << dendl;
|
||||
OSDriver backend(store, ch, hoid);
|
||||
map<string,ceph::buffer::list> m;
|
||||
set<string> rm;
|
||||
for (auto& [epoch, bypool] : purged_snaps) {
|
||||
@ -668,7 +665,6 @@ void SnapMapper::record_purged_snaps(
|
||||
}
|
||||
}
|
||||
}
|
||||
auto txn = backend.get_transaction(t);
|
||||
txn.remove_keys(rm);
|
||||
txn.set_keys(m);
|
||||
dout(10) << __func__ << " rm " << rm.size() << " keys, set " << m.size()
|
||||
|
@ -197,10 +197,8 @@ public:
|
||||
|
||||
static void record_purged_snaps(
|
||||
CephContext *cct,
|
||||
ObjectStore *store,
|
||||
ObjectStore::CollectionHandle& ch,
|
||||
ghobject_t hoid,
|
||||
ObjectStore::Transaction *t,
|
||||
OSDriver& backend,
|
||||
OSDriver::OSTransaction&& txn,
|
||||
std::map<epoch_t,mempool::osdmap::map<int64_t,snap_interval_set_t>> purged_snaps);
|
||||
static void scrub_purged_snaps(
|
||||
CephContext *cct,
|
||||
|
Loading…
Reference in New Issue
Block a user