From 343e344053697e24571f07d142fb380b13bcfad7 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 27 Jan 2010 10:49:30 -0800 Subject: [PATCH] filestore: queue_transaction and generic C_DeleteTransaction --- src/TODO | 3 +++ src/os/FileStore.cc | 10 +--------- src/os/ObjectStore.h | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/TODO b/src/TODO index 1ed6368797632..4250f448052e9 100644 --- a/src/TODO +++ b/src/TODO @@ -53,6 +53,9 @@ v0.19 filestore - need to check per-object state for conflicting reads and unapplied writes - use want_delayed(), want_rmw() to toggle delayed/rmw mode? or just for rmw->delayed transition? +- audit queue_transaction calls for dependencies +- convert apply_transaction calls in handle_map to queue? + - need an osdmap cache layer? pending wire format changes /- include a __u64 tid in ceph_msg_header diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 99b88ceaf9114..48872e097aa52 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -592,19 +592,11 @@ struct C_JournaledAhead : public Context { } }; -struct C_DeleteTrans : public Context { - ObjectStore::Transaction *t; - C_DeleteTrans(ObjectStore::Transaction *tt) : t(tt) {} - void finish(int r) { - delete t; - } -}; - int FileStore::queue_transaction(Transaction *t) { list tls; tls.push_back(t); - return queue_transactions(tls, new C_DeleteTrans(t)); + return queue_transactions(tls, new C_DeleteTransaction(t)); } int FileStore::queue_transactions(list &tls, diff --git a/src/os/ObjectStore.h b/src/os/ObjectStore.h index 9bc6af2221458..b29f3c52add3a 100644 --- a/src/os/ObjectStore.h +++ b/src/os/ObjectStore.h @@ -416,10 +416,24 @@ public: } }; + struct C_DeleteTransaction : public Context { + ObjectStore::Transaction *t; + C_DeleteTransaction(ObjectStore::Transaction *tt) : t(tt) {} + void finish(int r) { + delete t; + } + }; + + virtual unsigned apply_transaction(Transaction& t, Context *onjournal=0, Context *ondisk=0) = 0; virtual unsigned apply_transactions(list& tls, Context *onjournal=0, Context *ondisk=0) = 0; virtual int queue_transaction(Transaction* t) = 0; + virtual int queue_transaction(Transaction *t, Context *onreadable, Context *onjournal=0, Context *ondisk=0) { + list tls; + tls.push_back(t); + return queue_transactions(tls, onreadable, onjournal, ondisk); + } virtual int queue_transactions(list& tls, Context *onreadable, Context *onjournal=0, Context *ondisk=0) = 0; -- 2.39.5