diff options
author | Sage Weil <sage@newdream.net> | 2009-12-01 14:43:07 -0800 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2009-12-01 15:00:56 -0800 |
commit | 89beb68e0e3176023a442e9f0ba58ae6754f67bb (patch) | |
tree | 6ccae48899a8a720c9ab5b80b5cab65642a9446b | |
parent | 6c34e6719046a037ce9f5956bc9469d7d0e3ec22 (diff) | |
download | ceph-89beb68e0e3176023a442e9f0ba58ae6754f67bb.tar.gz |
mds: journal/replay rollback on MDSTableServer
We journal prepare and commit; need to do rollback to!
-rw-r--r-- | src/mds/MDSTableServer.cc | 2 | ||||
-rw-r--r-- | src/mds/MDSTableServer.h | 3 | ||||
-rw-r--r-- | src/mds/journal.cc | 4 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/mds/MDSTableServer.cc b/src/mds/MDSTableServer.cc index 8eb6a47b54f..dc864dbc547 100644 --- a/src/mds/MDSTableServer.cc +++ b/src/mds/MDSTableServer.cc @@ -105,6 +105,8 @@ void MDSTableServer::handle_rollback(MMDSTableRequest *req) { dout(7) << "handle_rollback " << *req << dendl; _rollback(req->tid); + _note_rollback(req->tid); + mds->mdlog->submit_entry(new ETableServer(table, TABLESERVER_OP_ROLLBACK, 0, -1, req->tid, version)); delete req; } diff --git a/src/mds/MDSTableServer.h b/src/mds/MDSTableServer.h index cc2023ddd9d..b45dde96f9b 100644 --- a/src/mds/MDSTableServer.h +++ b/src/mds/MDSTableServer.h @@ -86,6 +86,9 @@ private: void _note_commit(__u64 tid) { pending_for_mds.erase(tid); } + void _note_rollback(__u64 tid) { + pending_for_mds.erase(tid); + } MDSTableServer(MDS *m, int tab) : MDSTable(m, get_mdstable_name(tab), false), table(tab) {} diff --git a/src/mds/journal.cc b/src/mds/journal.cc index b5caed12a49..187e32db652 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -785,6 +785,10 @@ void ETableServer::replay(MDS *mds) server->_commit(tid); server->_note_commit(tid); break; + case TABLESERVER_OP_ROLLBACK: + server->_rollback(tid); + server->_note_rollback(tid); + break; case TABLESERVER_OP_SERVER_UPDATE: server->_server_update(mutation); break; |