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
}
};
-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<Transaction*> 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<Transaction*> &tls,
}
};
+ 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<Transaction*>& 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<Transaction*> tls;
+ tls.push_back(t);
+ return queue_transactions(tls, onreadable, onjournal, ondisk);
+ }
virtual int queue_transactions(list<Transaction*>& tls, Context *onreadable,
Context *onjournal=0, Context *ondisk=0) = 0;