diff options
author | Samuel Just <sam.just@inktank.com> | 2013-01-24 11:07:37 -0800 |
---|---|---|
committer | Samuel Just <sam.just@inktank.com> | 2013-01-24 17:25:08 -0800 |
commit | e0511f4f4773766d04e845af2d079f82f3177cb6 (patch) | |
tree | 5378c8c544d4e9c8221dbd10e51fbf83e67e0598 /src/osd/OSD.h | |
parent | 4f653d23999b24fc8c65a59f14905db6630be5b5 (diff) | |
download | ceph-e0511f4f4773766d04e845af2d079f82f3177cb6.tar.gz |
OSD: use TPHandle in peering_wq
Implement _process overload with TPHandle argument and use
that to ping the hb map between pgs and between map epochs
when advancing a pg. The thread will still timeout if
genuinely stuck at any point.
Fixes: 3905
Backport: bobtail
Signed-off-by: Samuel Just <sam.just@inktank.com>
Diffstat (limited to 'src/osd/OSD.h')
-rw-r--r-- | src/osd/OSD.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 1fb34aac610..23b95e89147 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -742,8 +742,10 @@ private: } in_use.insert(got.begin(), got.end()); } - void _process(const list<PG *> &pgs) { - osd->process_peering_events(pgs); + void _process( + const list<PG *> &pgs, + ThreadPool::TPHandle &handle) { + osd->process_peering_events(pgs, handle); for (list<PG *>::const_iterator i = pgs.begin(); i != pgs.end(); ++i) { @@ -762,7 +764,9 @@ private: } } peering_wq; - void process_peering_events(const list<PG*> &pg); + void process_peering_events( + const list<PG*> &pg, + ThreadPool::TPHandle &handle); friend class PG; friend class ReplicatedPG; @@ -797,8 +801,11 @@ private: void note_up_osd(int osd); void advance_pg( - epoch_t advance_to, PG *pg, PG::RecoveryCtx *rctx, - set<boost::intrusive_ptr<PG> > *split_pgs); + epoch_t advance_to, PG *pg, + ThreadPool::TPHandle &handle, + PG::RecoveryCtx *rctx, + set<boost::intrusive_ptr<PG> > *split_pgs + ); void advance_map(ObjectStore::Transaction& t, C_Contexts *tfin); void consume_map(); void activate_map(); |