From: Sage Weil Date: Fri, 18 Jul 2008 03:44:16 +0000 (-0700) Subject: mds: make CInode.last NOSNAP instead of 0 X-Git-Tag: v0.4~439 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a5d5e679b296251aec1078364e5022c02f076b92;p=ceph.git mds: make CInode.last NOSNAP instead of 0 --- diff --git a/src/mds/CInode.h b/src/mds/CInode.h index 4a0dee56268db..062207b954489 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -266,7 +266,7 @@ private: CInode(MDCache *c, bool auth=true) : mdcache(c), snaprealm(0), containing_realm(0), - first(1), last(0), + first(1), last(CEPH_NOSNAP), last_journaled(0), last_open_journaled(0), //hack_accessed(true), stickydir_ref(0), diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 58a7b900c341f..f94a08f16e014 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -976,7 +976,7 @@ void Locker::handle_client_file_caps(MClientFileCaps *m) // this cap now follows a later snap (i.e. the one initiating this flush, or later) cap->client_follows = follows+1; - if (in->last && in->last <= follows) { + if (in->last <= follows) { dout(10) << " flushsnap releasing cloned cap" << dendl; in->remove_client_cap(client); } else { @@ -1021,7 +1021,7 @@ void Locker::handle_client_file_caps(MClientFileCaps *m) _do_cap_update(in, had, in->get_caps_wanted() | wanted, follows, m); // done? - if (in->last == CEPH_NOSNAP || in->last == 0) + if (in->last == CEPH_NOSNAP) break; // next! diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 1df8140cd87c9..e6305e6fe39bd 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -3135,7 +3135,6 @@ void MDCache::do_file_recover() file_recover_queue.erase(in); snapid_t snap = in->last; - if (snap == 0) snap = CEPH_NOSNAP; // FIXME const vector& snaps = in->find_snaprealm()->get_snap_vector(); if (in->inode.max_size > in->inode.size) { diff --git a/src/mds/MDCache.h b/src/mds/MDCache.h index 8e804cd815e9a..783300756431b 100644 --- a/src/mds/MDCache.h +++ b/src/mds/MDCache.h @@ -666,12 +666,12 @@ public: bool did_shutdown_log_cap; // inode_map - bool have_inode(inodeno_t ino, snapid_t snap=0) { return have_inode(vinodeno_t(ino, snap)); } + bool have_inode(inodeno_t ino, snapid_t snap=CEPH_NOSNAP) { + return have_inode(vinodeno_t(ino, snap)); + } bool have_inode(vinodeno_t vino) { return inode_map.count(vino) ? true:false; } - CInode* get_inode(inodeno_t ino, snapid_t s=0) { - if (s == CEPH_NOSNAP) - s = 0; // ugly hack. - vinodeno_t vino(ino,s); + CInode* get_inode(inodeno_t ino, snapid_t s=CEPH_NOSNAP) { + vinodeno_t vino(ino, s); if (have_inode(vino)) return inode_map[vino]; return NULL; diff --git a/src/mds/journal.cc b/src/mds/journal.cc index 76b1053a93e5e..f9bb7bc4f4854 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -369,8 +369,7 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg) if (!in) { in = new CInode(mds->mdcache); in->first = p->dnfirst; - if (p->dnlast < CEPH_NOSNAP) - in->last = p->dnlast; + in->last = p->dnlast; in->inode = p->inode; in->xattrs = p->xattrs; if (in->inode.is_dir()) {