diff options
author | Sage Weil <sage@newdream.net> | 2009-02-20 16:44:51 -0800 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2009-02-20 17:16:23 -0800 |
commit | 5ebb8d5c7c4f1583f253a8f2cedd25cdd3de16d8 (patch) | |
tree | 909a0ffc33f301b995aceab2154376b24692dfef | |
parent | 5cb6c31076a56338472e5e58ca1650c19ac7b72d (diff) | |
download | ceph-5ebb8d5c7c4f1583f253a8f2cedd25cdd3de16d8.tar.gz |
mds: journal client prealloc ino
-rw-r--r-- | src/mds/MDCache.h | 1 | ||||
-rw-r--r-- | src/mds/Server.cc | 6 | ||||
-rw-r--r-- | src/mds/events/EMetaBlob.h | 8 |
3 files changed, 11 insertions, 4 deletions
diff --git a/src/mds/MDCache.h b/src/mds/MDCache.h index 173a02cac6c..c3401c2d57d 100644 --- a/src/mds/MDCache.h +++ b/src/mds/MDCache.h @@ -257,6 +257,7 @@ struct MDRequest : public Mutation { inodeno_t alloc_ino, used_prealloc_ino; deque<inodeno_t> prealloc_inos; + inodeno_t used_client_alloc; Capability *cap; int snap_caps; diff --git a/src/mds/Server.cc b/src/mds/Server.cc index ea4989acf39..3c95a6805c5 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -1440,8 +1440,7 @@ CInode* Server::prepare_new_inode(MDRequest *mdr, CDir *dir, inodeno_t useino, b if (clientprealloc) { // we need to journal the client prealloc use -#warning write me - + mdr->used_client_alloc = useino; } else { // assign ino if (mdr->session->prealloc_inos.size()) { @@ -1501,7 +1500,8 @@ void Server::journal_allocated_inos(MDRequest *mdr, EMetaBlob *blob) mdr->prealloc_inos, mdr->client_request->get_orig_source(), mds->sessionmap.projected, - mds->inotable->get_projected_version()); + mds->inotable->get_projected_version(), + mdr->used_client_alloc); } void Server::apply_allocated_inos(MDRequest *mdr) diff --git a/src/mds/events/EMetaBlob.h b/src/mds/events/EMetaBlob.h index dbd8ab51c37..a45d5525314 100644 --- a/src/mds/events/EMetaBlob.h +++ b/src/mds/events/EMetaBlob.h @@ -332,6 +332,8 @@ private: inodeno_t used_preallocated_ino; // session entity_name_t client_name; // session + inodeno_t used_client_alloc; + // inodes i've truncated list<inodeno_t> truncate_start; // start truncate map<inodeno_t,__u64> truncate_finish; // finished truncate (started in segment blah) @@ -352,6 +354,7 @@ private: ::encode(preallocated_inos, bl); ::encode(client_name, bl); ::encode(inotablev, bl); + ::encode(used_client_alloc, bl); ::encode(sessionmapv, bl); ::encode(truncate_start, bl); ::encode(truncate_finish, bl); @@ -368,6 +371,7 @@ private: ::decode(preallocated_inos, bl); ::decode(client_name, bl); ::decode(inotablev, bl); + ::decode(used_client_alloc, bl); ::decode(sessionmapv, bl); ::decode(truncate_start, bl); ::decode(truncate_finish, bl); @@ -410,13 +414,15 @@ private: inodeno_t used_prealloc, deque<inodeno_t>& prealloc, entity_name_t client, - version_t sv, version_t iv) { + version_t sv, version_t iv, + inodeno_t client_alloc) { allocated_ino = alloc; used_preallocated_ino = used_prealloc; preallocated_inos = prealloc; client_name = client; sessionmapv = sv; inotablev = iv; + used_client_alloc = client_alloc; } void add_truncate_start(inodeno_t ino) { |