From e039780a8422846671ad3eee02cdd7894cd803a3 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 20 May 2009 11:48:32 -0700 Subject: [PATCH] objecter: kill inc_locks. These aren't needed or used since there is a generic blacklist mechanism in the osdmap (that is simpler and more robust). --- src/include/ceph_fs.h | 2 +- src/include/rados.h | 2 -- src/mds/MDS.cc | 2 -- src/mds/MDSMap.h | 2 +- src/messages/MOSDOp.h | 5 ----- src/osdc/Journaler.cc | 8 +++---- src/osdc/Objecter.cc | 49 ++++--------------------------------------- src/osdc/Objecter.h | 12 +++-------- 8 files changed, 13 insertions(+), 69 deletions(-) diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index 6521cd47efabe..5de2c309cacbb 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -26,7 +26,7 @@ #define CEPH_OSD_PROTOCOL 5 /* cluster internal */ #define CEPH_MDS_PROTOCOL 9 /* cluster internal */ #define CEPH_MON_PROTOCOL 4 /* cluster internal */ -#define CEPH_OSDC_PROTOCOL 10 /* public/client */ +#define CEPH_OSDC_PROTOCOL 11 /* public/client */ #define CEPH_MDSC_PROTOCOL 20 /* public/client */ #define CEPH_MONC_PROTOCOL 12 /* public/client */ diff --git a/src/include/rados.h b/src/include/rados.h index c3b57c0a5dbc5..ef75e48b0570b 100644 --- a/src/include/rados.h +++ b/src/include/rados.h @@ -313,7 +313,6 @@ enum { CEPH_OSD_FLAG_ONNVRAM = 2, /* want (or is) "onnvram" ack */ CEPH_OSD_FLAG_ONDISK = 4, /* want (or is) "ondisk" ack */ CEPH_OSD_FLAG_RETRY = 8, /* resend attempt */ - CEPH_OSD_FLAG_INCLOCK_FAIL = 16, /* fail on inclock collision */ CEPH_OSD_FLAG_MODIFY = 32, /* op is/was a mutation */ CEPH_OSD_FLAG_ORDERSNAP = 64, /* EOLDSNAP if snapc is out of order */ CEPH_OSD_FLAG_PEERSTAT = 128, /* msg includes osd_peer_stat */ @@ -354,7 +353,6 @@ struct ceph_osd_request_head { __le32 osdmap_epoch; __le32 flags; - __le32 inc_lock; struct ceph_timespec mtime; struct ceph_eversion reassert_version; diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 9f4df4c64663c..6542cf3fd1130 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -614,8 +614,6 @@ void MDS::handle_mds_map(MMDSMap *m) // tell objecter my incarnation if (objecter->get_client_incarnation() != incarnation) objecter->set_client_incarnation(incarnation); - // and inc_lock - objecter->set_inc_lock(mdsmap->get_last_failure()); // for debug if (g_conf.mds_dump_cache_on_map) diff --git a/src/mds/MDSMap.h b/src/mds/MDSMap.h index c7001c200c8c9..e8d8c7bf6a3d0 100644 --- a/src/mds/MDSMap.h +++ b/src/mds/MDSMap.h @@ -122,7 +122,7 @@ protected: // base map epoch_t epoch; epoch_t client_epoch; // incremented only when change is significant to client. - epoch_t last_failure; // epoch of last failure. for inclocks + epoch_t last_failure; // epoch of last failure utime_t created, modified; int32_t tableserver; // which MDS has anchortable, snaptable diff --git a/src/messages/MOSDOp.h b/src/messages/MOSDOp.h index dcfcd50638ea0..186bdcbf52161 100644 --- a/src/messages/MOSDOp.h +++ b/src/messages/MOSDOp.h @@ -27,8 +27,6 @@ * */ -#define EINCLOCKED 100 - class MOSDOp : public Message { private: ceph_osd_request_head head; @@ -64,8 +62,6 @@ public: bool is_modify() { return head.flags & CEPH_OSD_FLAG_MODIFY; } - unsigned get_inc_lock() const { return head.inc_lock; } - void set_peer_stat(const osd_peer_stat_t& stat) { peer_stat = stat; head.flags = (head.flags | CEPH_OSD_FLAG_PEERSTAT); @@ -94,7 +90,6 @@ public: } MOSDOp() {} - void set_inc_lock(__u32 l) { head.inc_lock = l; } void set_layout(const ceph_object_layout& l) { head.layout = l; } void set_version(eversion_t v) { head.reassert_version = v; } void set_mtime(utime_t mt) { head.mtime = mt; } diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc index 87dc2ddc291c3..c8fb0ab57fa4e 100644 --- a/src/osdc/Journaler.cc +++ b/src/osdc/Journaler.cc @@ -146,7 +146,7 @@ void Journaler::_finish_read_head(int r, bufferlist& bl) state = STATE_PROBING; C_ProbeEnd *fin = new C_ProbeEnd(this); filer.probe(ino, &layout, CEPH_NOSNAP, - h.write_pos, (__u64 *)&fin->end, 0, true, CEPH_OSD_FLAG_INCLOCK_FAIL, fin); + h.write_pos, (__u64 *)&fin->end, 0, true, 0, fin); } void Journaler::_finish_probe_end(int r, __s64 end) @@ -407,7 +407,7 @@ void Journaler::_do_flush(unsigned amount) filer.write(ino, &layout, snapc, flush_pos, len, write_bl, g_clock.now(), - CEPH_OSD_FLAG_INCLOCK_FAIL, + 0, onack, onsafe); flush_pos += len; @@ -604,7 +604,7 @@ void Journaler::_issue_read(__s64 len) << dendl; filer.read(ino, &layout, CEPH_NOSNAP, - requested_pos, len, &reading_buf, CEPH_OSD_FLAG_INCLOCK_FAIL, + requested_pos, len, &reading_buf, 0, new C_Read(this)); requested_pos += len; } @@ -793,7 +793,7 @@ void Journaler::trim() SnapContext snapc; filer.remove(ino, &layout, snapc, - trimming_pos, trim_to-trimming_pos, g_clock.now(), CEPH_OSD_FLAG_INCLOCK_FAIL, + trimming_pos, trim_to-trimming_pos, g_clock.now(), 0, NULL, new C_Trim(this, trim_to)); trimming_pos = trim_to; } diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index f6286fc81411a..7a4dcb48431da 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -394,10 +394,6 @@ tid_t Objecter::read_submit(ReadOp *rd) m->set_snapid(rd->snap); m->ops = rd->ops; m->set_data(rd->bl); - if (inc_lock > 0) { - rd->inc_lock = inc_lock; - m->set_inc_lock(inc_lock); - } m->set_retry_attempt(rd->attempts++); int who = pg.acker(); @@ -436,23 +432,9 @@ void Objecter::handle_osd_read_reply(MOSDOpReply *m) pg.active_tids.erase(tid); if (pg.active_tids.empty()) close_pg( m->get_pg() ); - // fail? - if (m->get_result() == -EINCLOCKED && - rd->flags & CEPH_OSD_FLAG_INCLOCK_FAIL) { - dout(7) << " got -EINCLOCKED, failing" << dendl; - if (rd->onfinish) { - rd->onfinish->finish(-EINCLOCKED); - delete rd->onfinish; - } - delete rd; - delete m; - return; - } - // success? - if (m->get_result() == -EAGAIN || - m->get_result() == -EINCLOCKED) { - dout(7) << " got -EAGAIN or -EINCLOCKED, resubmitting" << dendl; + if (m->get_result() == -EAGAIN) { + dout(7) << " got -EAGAIN resubmitting" << dendl; read_submit(rd); delete m; return; @@ -529,10 +511,6 @@ tid_t Objecter::modify_submit(ModifyOp *wr) m->set_mtime(wr->mtime); m->set_snap_seq(wr->snapc.seq); m->get_snaps() = wr->snapc.snaps; - if (inc_lock > 0) { - wr->inc_lock = inc_lock; - m->set_inc_lock(inc_lock); - } m->set_retry_attempt(wr->attempts++); if (wr->version != eversion_t()) @@ -583,25 +561,9 @@ void Objecter::handle_osd_modify_reply(MOSDOpReply *m) } int rc = 0; - if (m->get_result() == -EINCLOCKED && wr->flags & CEPH_OSD_FLAG_INCLOCK_FAIL) { - dout(7) << " got -EINCLOCKED, failing" << dendl; - rc = -EINCLOCKED; - if (wr->onack) { - onack = wr->onack; - wr->onack = 0; - num_unacked--; - } - if (wr->oncommit) { - oncommit = wr->oncommit; - wr->oncommit = 0; - num_uncommitted--; - } - goto done; - } - if (m->get_result() == -EAGAIN || - m->get_result() == -EINCLOCKED) { - dout(7) << " got -EAGAIN or -EINCLOCKED, resubmitting" << dendl; + if (m->get_result() == -EAGAIN) { + dout(7) << " got -EAGAIN, resubmitting" << dendl; if (wr->onack) num_unacked--; if (wr->oncommit) num_uncommitted--; modify_submit(wr); @@ -626,9 +588,6 @@ void Objecter::handle_osd_modify_reply(MOSDOpReply *m) num_uncommitted--; } - // done? - done: - // done with this tid? if (!wr->onack && !wr->oncommit) { assert(pg.active_tids.count(tid)); diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 6cc4bb04604d5..425f40bf85eb5 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -162,7 +162,6 @@ class Objecter { private: tid_t last_tid; int client_inc; - int inc_lock; // optional int num_unacked; int num_uncommitted; @@ -199,14 +198,13 @@ class Objecter { tid_t tid; int attempts; - int inc_lock; bool paused; ReadOp(object_t o, ceph_object_layout& ol, vector& op, snapid_t s, int f, Context *of) : oid(o), layout(ol), snap(s), pbl(0), flags(f), onfinish(of), - tid(0), attempts(0), inc_lock(-1), + tid(0), attempts(0), paused(false) { ops.swap(op); } @@ -225,7 +223,6 @@ class Objecter { tid_t tid; int attempts; - int inc_lock; eversion_t version; bool paused; @@ -233,7 +230,7 @@ class Objecter { ModifyOp(object_t o, ceph_object_layout& l, vector& op, utime_t mt, const SnapContext& sc, int f, Context *ac, Context *co) : oid(o), layout(l), snapc(sc), mtime(mt), flags(f), onack(ac), oncommit(co), - tid(0), attempts(0), inc_lock(-1), + tid(0), attempts(0), paused(false) { ops.swap(op); } @@ -310,7 +307,7 @@ class Objecter { public: Objecter(Messenger *m, MonMap *mm, OSDMap *om, Mutex& l) : messenger(m), monmap(mm), osdmap(om), - last_tid(0), client_inc(-1), inc_lock(0), + last_tid(0), client_inc(-1), num_unacked(0), num_uncommitted(0), last_epoch_requested(0), client_lock(l), timer(l) @@ -340,9 +337,6 @@ class Objecter { int get_client_incarnation() const { return client_inc; } void set_client_incarnation(int inc) { client_inc = inc; } - //int get_inc_lock() const { return inc_lock; } - void set_inc_lock(int l) { inc_lock = l; } - // low-level tid_t read_submit(ReadOp *rd); tid_t modify_submit(ModifyOp *wr); -- 2.39.5