From: Pan Liu Date: Fri, 10 Mar 2017 15:05:33 +0000 (+0800) Subject: os/filestore: move ondisk in front, so that return oncommit earlier, and improve... X-Git-Tag: v12.1.1~193^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=21f167cf39cc7c025004e9b455ce8ba1252863f0;p=ceph.git os/filestore: move ondisk in front, so that return oncommit earlier, and improve write op performance. Signed-off-by: Pan Liu --- diff --git a/src/os/filestore/FileStore.cc b/src/os/filestore/FileStore.cc index 40fe2f99bea9..2ce58f5a53ba 100644 --- a/src/os/filestore/FileStore.cc +++ b/src/os/filestore/FileStore.cc @@ -2215,18 +2215,19 @@ void FileStore::_journaled_ahead(OpSequencer *osr, Op *o, Context *ondisk) { dout(5) << "_journaled_ahead " << o << " seq " << o->op << " " << *osr << " " << o->tls << dendl; - // this should queue in order because the journal does it's completions in order. - queue_op(osr, o); - - list to_queue; - osr->dequeue_journal(&to_queue); - // do ondisk completions async, to prevent any onreadable_sync completions // getting blocked behind an ondisk completion. if (ondisk) { dout(10) << " queueing ondisk " << ondisk << dendl; ondisk_finishers[osr->id % m_ondisk_finisher_num]->queue(ondisk); } + + // this should queue in order because the journal does it's completions in order. + queue_op(osr, o); + + list to_queue; + osr->dequeue_journal(&to_queue); + if (!to_queue.empty()) { ondisk_finishers[osr->id % m_ondisk_finisher_num]->queue(to_queue); }