From d86d1c93867f27d70e99159f8c83c281c960ee49 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 7 Aug 2008 13:13:38 -0700 Subject: [PATCH] osd: add clones to bounding snap collection(s) --- src/osd/ReplicatedPG.cc | 10 ++++++++++ src/osd/osd_types.h | 12 +++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 539f4bda3eb16..213ea58cd5fef 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -721,6 +721,16 @@ void ReplicatedPG::prepare_transaction(ObjectStore::Transaction& t, osd_reqid_t t.setattr(info.pgid.to_coll(), coid, "snaps", snapsbl); t.setattr(info.pgid.to_coll(), coid, "version", &at_version, sizeof(at_version)); + // add to snap bound collections + coll_t fc = info.pgid.to_snap_coll(snaps[0]); + t.create_collection(fc); + t.collection_add(fc, info.pgid.to_coll(), coid); + if (snaps.size() > 1) { + coll_t lc = info.pgid.to_snap_coll(snaps[snaps.size()-1]); + t.create_collection(lc); + t.collection_add(lc, info.pgid.to_coll(), coid); + } + snapset.clones.push_back(coid.oid.snap); at_version.version++; diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index c294c7c180feb..80afa925d155e 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -118,14 +118,20 @@ public: operator uint64_t() const { return u.pg64; } - coll_t to_coll() const { - return coll_t(u.pg64, 0); - } pobject_t to_pobject() const { return pobject_t(OSD_METADATA_PG_POOL, // osd metadata 0, object_t(u.pg64, 0)); } + + coll_t to_coll() const { + return coll_t(u.pg64, 0); + } + coll_t to_snap_coll(snapid_t sn) const { + return coll_t(u.pg64, sn); + } + + } __attribute__ ((packed)); inline void encode(pg_t pgid, bufferlist& bl) { encode_raw(pgid.u.pg64, bl); } -- 2.39.5