summaryrefslogtreecommitdiff
path: root/src/osd/OSD.h
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-01-24 11:07:37 -0800
committerSamuel Just <sam.just@inktank.com>2013-01-24 17:25:08 -0800
commite0511f4f4773766d04e845af2d079f82f3177cb6 (patch)
tree5378c8c544d4e9c8221dbd10e51fbf83e67e0598 /src/osd/OSD.h
parent4f653d23999b24fc8c65a59f14905db6630be5b5 (diff)
downloadceph-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.h17
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();