From 09af405da213d5cc99b0d49b30ca1a9f5e97b38b Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Sat, 3 May 2014 08:41:05 -0700 Subject: [PATCH] osd: adapt to new Objecter interface Signed-off-by: Yehuda Sadeh --- src/osd/OSD.cc | 32 +++++++------------------------- src/osd/OSD.h | 2 -- src/osd/ReplicatedPG.cc | 11 +---------- 3 files changed, 8 insertions(+), 37 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 2f4cded51c3..0892820b108 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -210,10 +210,8 @@ OSDService::OSDService(OSD *osd) : agent_stop_flag(false), agent_timer_lock("OSD::agent_timer_lock"), agent_timer(osd->client_messenger->cct, agent_timer_lock), - objecter_lock("OSD::objecter_lock"), - objecter_timer(osd->client_messenger->cct, objecter_lock), objecter(new Objecter(osd->client_messenger->cct, osd->objecter_messenger, osd->monc, &objecter_osdmap, - objecter_lock, objecter_timer, 0, 0)), + 0, 0)), objecter_finisher(osd->client_messenger->cct), objecter_dispatcher(this), watch_lock("OSD::watch_lock"), @@ -446,12 +444,7 @@ void OSDService::shutdown() watch_timer.shutdown(); } - { - Mutex::Locker l(objecter_lock); - objecter_timer.shutdown(); - objecter->shutdown_locked(); - } - objecter->shutdown_unlocked(); + objecter->shutdown(); objecter_finisher.stop(); { @@ -465,14 +458,9 @@ void OSDService::shutdown() void OSDService::init() { reserver_finisher.start(); - { - objecter_finisher.start(); - objecter->init_unlocked(); - Mutex::Locker l(objecter_lock); - objecter_timer.init(); - objecter->set_client_incarnation(0); - objecter->init_locked(); - } + objecter_finisher.start(); + objecter->set_client_incarnation(0); + objecter->init(); watch_timer.init(); agent_timer.init(); @@ -5365,21 +5353,18 @@ bool OSD::heartbeat_dispatch(Message *m) bool OSDService::ObjecterDispatcher::ms_dispatch(Message *m) { - Mutex::Locker l(osd->objecter_lock); osd->objecter->dispatch(m); return true; } bool OSDService::ObjecterDispatcher::ms_handle_reset(Connection *con) { - Mutex::Locker l(osd->objecter_lock); osd->objecter->ms_handle_reset(con); return true; } void OSDService::ObjecterDispatcher::ms_handle_connect(Connection *con) { - Mutex::Locker l(osd->objecter_lock); return osd->objecter->ms_handle_connect(con); } @@ -6141,11 +6126,8 @@ void OSD::handle_osd_map(MOSDMap *m) session->put(); // share with the objecter - { - Mutex::Locker l(service.objecter_lock); - m->get(); - service.objecter->handle_osd_map(m); - } + m->get(); + service.objecter->handle_osd_map(m); epoch_t first = m->get_first(); epoch_t last = m->get_last(); diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 0007cc8332d..c5e40d0d1fc 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -649,8 +649,6 @@ public: // -- Objecter, for teiring reads/writes from/to other OSDs -- - Mutex objecter_lock; - SafeTimer objecter_timer; OSDMap objecter_osdmap; Objecter *objecter; Finisher objecter_finisher; diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 3e283cc3fdb..7682c9837ac 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -5782,12 +5782,10 @@ void ReplicatedPG::_copy_some(ObjectContextRef obc, CopyOpRef cop) assert(cop->src.snap == CEPH_NOSNAP); ObjectOperation op; op.list_snaps(&cop->results.snapset, NULL); - osd->objecter_lock.Lock(); ceph_tid_t tid = osd->objecter->read(cop->src.oid, cop->oloc, op, CEPH_SNAPDIR, NULL, flags, gather.new_sub(), NULL); cop->objecter_tid2 = tid; - osd->objecter_lock.Unlock(); } ObjectOperation op; @@ -5810,7 +5808,6 @@ void ReplicatedPG::_copy_some(ObjectContextRef obc, CopyOpRef cop) gather.set_finisher(new C_OnFinisher(fin, &osd->objecter_finisher)); - osd->objecter_lock.Lock(); ceph_tid_t tid = osd->objecter->read(cop->src.oid, cop->oloc, op, cop->src.snap, NULL, flags, @@ -5820,7 +5817,6 @@ void ReplicatedPG::_copy_some(ObjectContextRef obc, CopyOpRef cop) fin->tid = tid; cop->objecter_tid = tid; gather.activate(); - osd->objecter_lock.Unlock(); } void ReplicatedPG::process_copy_chunk(hobject_t oid, ceph_tid_t tid, int r) @@ -6236,7 +6232,6 @@ void ReplicatedPG::cancel_copy(CopyOpRef cop, bool requeue) // cancel objecter op, if we can if (cop->objecter_tid) { - Mutex::Locker l(osd->objecter_lock); osd->objecter->op_cancel(cop->objecter_tid, -ECANCELED); cop->objecter_tid = 0; if (cop->objecter_tid2) { @@ -6454,7 +6449,6 @@ int ReplicatedPG::start_flush( if (dsnapc.seq > 0) { ObjectOperation o; o.remove(); - osd->objecter_lock.Lock(); osd->objecter->mutate( soid.oid, base_oloc, @@ -6466,7 +6460,6 @@ int ReplicatedPG::start_flush( CEPH_OSD_FLAG_ENFORCE_SNAPC), NULL, NULL /* no callback, we'll rely on the ordering w.r.t the next op */); - osd->objecter_lock.Unlock(); } FlushOpRef fop(new FlushOp); @@ -6490,16 +6483,15 @@ int ReplicatedPG::start_flush( } C_Flush *fin = new C_Flush(this, soid, get_last_peering_reset()); - osd->objecter_lock.Lock(); ceph_tid_t tid = osd->objecter->mutate( soid.oid, base_oloc, o, snapc, oi.mtime, CEPH_OSD_FLAG_IGNORE_OVERLAY | CEPH_OSD_FLAG_ENFORCE_SNAPC, NULL, new C_OnFinisher(fin, &osd->objecter_finisher)); + /* we're under the pg lock and fin->finish() is grabbing that */ fin->tid = tid; fop->objecter_tid = tid; - osd->objecter_lock.Unlock(); flush_ops[soid] = fop; return -EINPROGRESS; @@ -6642,7 +6634,6 @@ void ReplicatedPG::cancel_flush(FlushOpRef fop, bool requeue) dout(10) << __func__ << " " << fop->obc->obs.oi.soid << " tid " << fop->objecter_tid << dendl; if (fop->objecter_tid) { - Mutex::Locker l(osd->objecter_lock); osd->objecter->op_cancel(fop->objecter_tid, -ECANCELED); fop->objecter_tid = 0; } -- 2.47.3