From: Samuel Just Date: Fri, 13 Sep 2013 22:58:33 +0000 (-0700) Subject: FileStore: ping tphandle between each operation within a transaction X-Git-Tag: v0.71~68^2~35 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=de4cc8717e92732d7a60114d53efb0f9bd8bca0e;p=ceph.git FileStore: ping tphandle between each operation within a transaction Signed-off-by: Samuel Just --- 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::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 *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 &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& tls, TrackedOpRef op = TrackedOpRef());