]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
filestore: queue onreadable _after_ starting journal item
authorSage Weil <sage@newdream.net>
Wed, 27 Jan 2010 18:49:48 +0000 (10:49 -0800)
committerSage Weil <sage@newdream.net>
Wed, 27 Jan 2010 18:49:48 +0000 (10:49 -0800)
The onreadable is allowed to delete the Transaction

src/os/FileStore.cc

index 48872e097aa52c83dc8d73dffeb22cad2b707368..0c8b1ab8e3b10e2a7defb3ee870d26b3e80af247 100644 (file)
@@ -630,7 +630,6 @@ int FileStore::queue_transactions(list<Transaction*> &tls,
   dout(10) << "queue_transactions (trailing journal) " << op_seq << " " << tls << dendl;
   int r = do_transactions(tls, op_seq);
   op_apply_finish();
-  op_finisher.queue(onreadable, r);
     
   if (r >= 0) {
     op_journal_start(op_seq);
@@ -640,6 +639,11 @@ int FileStore::queue_transactions(list<Transaction*> &tls,
     delete onjournal;
     delete ondisk;
   }
+
+  // start on_readable finisher after we queue journal item, as on_readable callback
+  // is allowed to delete the Transaction
+  op_finisher.queue(onreadable, r);
+
   return r;
 }