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-26 11:21:15 -0700
commitde4cc8717e92732d7a60114d53efb0f9bd8bca0e (patch)
treee95ee17b6e7a192ed9ee48291d1fa006f8200362
parent5f44a949efdfa2367cb3f591b1838ba41c72dbe2 (diff)
downloadceph-de4cc8717e92732d7a60114d53efb0f9bd8bca0e.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 ac51f95006f..68a922bc1e0 100644
--- a/src/os/FileStore.cc
+++ b/src/os/FileStore.cc
@@ -1711,7 +1711,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)
@@ -1973,7 +1973,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;
@@ -1981,6 +1983,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;
@@ -3918,6 +3923,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)
@@ -3929,6 +3935,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 4f58df4d698..9ba4a866a4b 100644
--- a/src/os/FileStore.h
+++ b/src/os/FileStore.h
@@ -329,7 +329,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());