summaryrefslogtreecommitdiff
path: root/src/osd/OSD.cc
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-05-20 15:19:35 -0700
committerSamuel Just <sam.just@inktank.com>2013-05-20 15:32:53 -0700
commit4cf00b9d5b4ef9e75d43880d0ef8569808be7841 (patch)
treea7cd22754119a11c35ee84c68fcad0ae0800391a /src/osd/OSD.cc
parentd9c92e772cc8cd8318ab5d568bb98b2c7e6dba51 (diff)
downloadceph-4cf00b9d5b4ef9e75d43880d0ef8569808be7841.tar.gz
OSD: kill old split code, it's been dead for a while
Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: David Zafman <david.zafman@inktank.com>
Diffstat (limited to 'src/osd/OSD.cc')
-rw-r--r--src/osd/OSD.cc158
1 files changed, 0 insertions, 158 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index 2c5cc07e04f..fbc0555ed14 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -5050,164 +5050,6 @@ void OSD::split_pgs(
parent->write_if_dirty(*(rctx->transaction));
}
-
-void OSD::do_split(PG *parent, set<pg_t>& childpgids, ObjectStore::Transaction& t,
- C_Contexts *tfin)
-{
- dout(10) << "do_split to " << childpgids << " on " << *parent << dendl;
-
- parent->lock();
-
- // create and lock children
- map<pg_t,PG*> children;
- for (set<pg_t>::iterator q = childpgids.begin();
- q != childpgids.end();
- ++q) {
- pg_history_t history;
- history.epoch_created = history.same_up_since =
- history.same_interval_since = history.same_primary_since =
- osdmap->get_epoch();
- pg_interval_map_t pi;
- PG *pg = _create_lock_pg(service.get_osdmap(), *q, true, true,
- parent->get_role(), parent->up, parent->acting, history, pi, t);
- children[*q] = pg;
- dout(10) << " child " << *pg << dendl;
- }
-
- split_pg(parent, children, t);
-
-#if 0
- // reset pg
- map< int, vector<pair<pg_notify_t, pg_interval_map_t> > > notify_list; // primary -> list
- map< int, map<pg_t,pg_query_t> > query_map; // peer -> PG -> get_summary_since
- map<int,vector<pair<pg_notify_t, pg_interval_map_t> > > info_map; // peer -> message
- PG::RecoveryCtx rctx(&query_map, &info_map, &notify_list, &tfin->contexts, &t);
-
- // FIXME: this breaks if we have a map discontinuity
- //parent->handle_split(osdmap, get_map(osdmap->get_epoch() - 1), &rctx);
-
- // unlock parent, children
- parent->unlock();
-
- for (map<pg_t,PG*>::iterator q = children.begin(); q != children.end(); ++q) {
- PG *pg = q->second;
- pg->handle_create(&rctx);
- pg->write_if_dirty(t);
- wake_pg_waiters(pg->info.pgid);
- pg->unlock();
- }
-
- do_notifies(notify_list);
- do_queries(query_map);
- do_infos(info_map);
-#endif
-}
-
-void OSD::split_pg(PG *parent, map<pg_t,PG*>& children, ObjectStore::Transaction &t)
-{
- dout(10) << "split_pg " << *parent << dendl;
- pg_t parentid = parent->info.pgid;
-
- // split objects
- vector<hobject_t> olist;
- store->collection_list(coll_t(parent->info.pgid), olist);
-
- for (vector<hobject_t>::iterator p = olist.begin(); p != olist.end(); ++p) {
- hobject_t poid = *p;
- object_locator_t oloc(parentid.pool());
- if (poid.get_key().size())
- oloc.key = poid.get_key();
- pg_t rawpg = osdmap->object_locator_to_pg(poid.oid, oloc);
- pg_t pgid = osdmap->raw_pg_to_pg(rawpg);
- if (pgid != parentid) {
- dout(20) << " moving " << poid << " from " << parentid << " -> " << pgid << dendl;
- PG *child = children[pgid];
- assert(child);
- bufferlist bv;
-
- struct stat st;
- store->stat(coll_t(parentid), poid, &st);
- store->getattr(coll_t(parentid), poid, OI_ATTR, bv);
- object_info_t oi(bv);
-
- t.collection_move(coll_t(pgid), coll_t(parentid), poid);
- if (!oi.snaps.empty()) {
- snapid_t first = oi.snaps[0];
- t.collection_move(coll_t(pgid, first), coll_t(parentid), poid);
- if (oi.snaps.size() > 1) {
- snapid_t last = oi.snaps[oi.snaps.size()-1];
- t.collection_move(coll_t(pgid, last), coll_t(parentid), poid);
- }
- }
-
- // add to child stats
- child->info.stats.stats.sum.num_bytes += st.st_size;
- child->info.stats.stats.sum.num_objects++;
- if (poid.snap && poid.snap != CEPH_NOSNAP)
- child->info.stats.stats.sum.num_object_clones++;
- } else {
- dout(20) << " leaving " << poid << " in " << parentid << dendl;
- }
- }
-
- // split log
- parent->log.index();
- dout(20) << " parent " << parent->info.pgid << " log was ";
- parent->log.print(*_dout);
- *_dout << dendl;
- parent->log.unindex();
-
- list<pg_log_entry_t>::iterator p = parent->log.log.begin();
- while (p != parent->log.log.end()) {
- list<pg_log_entry_t>::iterator cur = p;
- ++p;
- hobject_t& poid = cur->soid;
- object_locator_t oloc(parentid.pool());
- if (poid.get_key().size())
- oloc.key = poid.get_key();
- pg_t rawpg = osdmap->object_locator_to_pg(poid.oid, oloc);
- pg_t pgid = osdmap->raw_pg_to_pg(rawpg);
- if (pgid != parentid) {
- dout(20) << " moving " << *cur << " from " << parentid << " -> " << pgid << dendl;
- PG *child = children[pgid];
-
- child->log.log.splice(child->log.log.end(), parent->log.log, cur);
- }
- }
-
- parent->log.index();
- dout(20) << " parent " << parent->info.pgid << " log now ";
- parent->log.print(*_dout);
- *_dout << dendl;
-
- for (map<pg_t,PG*>::iterator p = children.begin();
- p != children.end();
- ++p) {
- PG *child = p->second;
-
- // fix log bounds
- if (!child->log.empty()) {
- child->log.head = child->log.log.rbegin()->version;
- child->log.tail = parent->log.tail;
- child->log.index();
- }
- child->info.last_update = child->log.head;
- child->info.last_complete = child->info.last_update;
- child->info.log_tail = parent->log.tail;
- child->info.history.last_epoch_split = osdmap->get_epoch();
-
- child->snap_trimq = parent->snap_trimq;
-
- dout(20) << " child " << p->first << " log now ";
- child->log.print(*_dout);
- *_dout << dendl;
-
- // sub off child stats
- parent->info.stats.sub(child->info.stats);
- }
-}
-
-
/*
* holding osd_lock
*/