summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-09-13 15:58:33 -0700
committerSamuel Just <sam.just@inktank.com>2013-09-13 19:49:27 -0700
commit82b156981ca72280550284af35289f4e973b9d90 (patch)
treee628e531ff0e8e2729abc5fbf6d1258b76f25470
parent90f662c536209efe7a6b2dd23837bbcaba885679 (diff)
downloadceph-82b156981ca72280550284af35289f4e973b9d90.tar.gz
FileStore: ping tphandle between each operation within a transaction
Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/os/FileStore.cc12
-rw-r--r--src/os/FileStore.h4
2 files changed, 13 insertions, 3 deletions
diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc
index 7ef415213b0..3f090890292 100644
--- a/src/os/FileStore.cc
+++ b/src/os/FileStore.cc
@@ -1706,7 +1706,7 @@ int FileStore::_do_transactions(
for (list<Transaction*>::iterator p = tls.begin();
p != tls.end();
++p, trans_num++) {
- r = _do_transaction(**p, op_seq, trans_num);
+ r = _do_transaction(**p, op_seq, trans_num, handle);
if (r < 0)
break;
if (handle)
@@ -1968,7 +1968,9 @@ int FileStore::_check_replay_guard(int fd, const SequencerPosition& spos)
}
}
-unsigned FileStore::_do_transaction(Transaction& t, uint64_t op_seq, int trans_num)
+unsigned FileStore::_do_transaction(
+ Transaction& t, uint64_t op_seq, int trans_num,
+ ThreadPool::TPHandle *handle)
{
dout(10) << "_do_transaction on " << &t << dendl;
@@ -1976,6 +1978,9 @@ unsigned FileStore::_do_transaction(Transaction& t, uint64_t op_seq, int trans_n
SequencerPosition spos(op_seq, trans_num, 0);
while (i.have_op()) {
+ if (handle)
+ handle->reset_tp_timeout();
+
int op = i.get_op();
int r = 0;
@@ -3903,6 +3908,7 @@ int FileStore::collection_list_partial(coll_t c, hobject_t start,
int min, int max, snapid_t seq,
vector<hobject_t> *ls, hobject_t *next)
{
+ dout(10) << "collection_list_partial: " << c << dendl;
Index index;
int r = get_index(c, &index);
if (r < 0)
@@ -3914,6 +3920,8 @@ int FileStore::collection_list_partial(coll_t c, hobject_t start,
assert(!m_filestore_fail_eio || r != -EIO);
return r;
}
+ if (ls)
+ dout(20) << "objects: " << *ls << dendl;
return 0;
}
diff --git a/src/os/FileStore.h b/src/os/FileStore.h
index c603949b399..c8d8678e857 100644
--- a/src/os/FileStore.h
+++ b/src/os/FileStore.h
@@ -328,7 +328,9 @@ public:
int do_transactions(list<Transaction*> &tls, uint64_t op_seq) {
return _do_transactions(tls, op_seq, 0);
}
- unsigned _do_transaction(Transaction& t, uint64_t op_seq, int trans_num);
+ unsigned _do_transaction(
+ Transaction& t, uint64_t op_seq, int trans_num,
+ ThreadPool::TPHandle *handle);
int queue_transactions(Sequencer *osr, list<Transaction*>& tls,
TrackedOpRef op = TrackedOpRef());