From 5cba1e633356d6a83fb80963aacc2e296c70710a Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 8 Dec 2010 11:36:18 -0800 Subject: [PATCH] objecter: a few lingering fixes --- src/osdc/Objecter.cc | 21 ++++++++++++--------- src/osdc/Objecter.h | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index 81372d302621e..1f61926732cd3 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -292,6 +292,8 @@ void Objecter::scan_pgs(set& changed_pgs) if (other == pg.acting) continue; // no change. + pg.epoch = osdmap->get_epoch(); + dout(10) << "scan_pgs " << pgid << " " << pg.acting << " -> " << other << dendl; other.swap(pg.acting); @@ -312,7 +314,7 @@ void Objecter::scan_pgs(set& changed_pgs) void Objecter::kick_requests(set& changed_pgs) { dout(10) << "kick_requests in pgs " << changed_pgs << dendl; - dout(0) << "kick_requests in pgs " << changed_pgs << dendl; + dout(0) << "*** kick_requests in pgs " << changed_pgs << dendl; for (set::iterator i = changed_pgs.begin(); i != changed_pgs.end(); @@ -328,10 +330,11 @@ void Objecter::kick_requests(set& changed_pgs) tids.insert(*liter); dout(0) << "adding lingering tid=" << *liter << " to set" << dendl; } - dout(0) << "pg.linger_tids.empty()=" << pg.linger_tids.empty() << " pg=" << &pg << dendl; + dout(0) << "pg.linger_tids.empty()=" << pg.linger_tids.empty() << " pg=" << &pg << " pg.epoch=" << pg.epoch << dendl; + if (pg.linger_tids.empty()) close_pg( pgid ); // will pbly reopen, unless it's just commits we're missing - + dout(10) << "kick_requests pg " << pgid << " tids " << tids << dendl; for (set::iterator p = tids.begin(); p != tids.end(); @@ -355,11 +358,12 @@ void Objecter::kick_requests(set& changed_pgs) dout(3) << "kick_requests missing ack, resub " << tid << dendl; op_submit(op, false); } else { - if (!op->linger) + if (!op->linger) { assert(op->oncommit); - dout(3) << "kick_requests missing commit, resub " << tid << dendl; - dout(0) << "kick_requests missing commit, resub " << tid << dendl; - op_submit(op, false); + dout(3) << "kick_requests missing commit, resub " << tid << dendl; + dout(0) << "kick_requests missing commit, resub " << tid << dendl; + op_submit(op, false); + } } } else { hash_map::iterator p = op_osd_linger.find(tid); @@ -370,9 +374,8 @@ void Objecter::kick_requests(set& changed_pgs) assert(0); } } -#if 0 -#endif } + dout(0) << "*** kick_requests done" << dendl; } diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index ada014e878f52..05ca48a62b96e 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -428,6 +428,7 @@ public: set active_tids; // active ops set linger_tids; // active ops utime_t last; + epoch_t epoch; // generation epoch PG() {} -- 2.39.5