From: Sage Weil Date: Wed, 24 Aug 2011 23:25:49 +0000 (-0700) Subject: client: factor update_dentry_lease() out of insert_dentry_inode() X-Git-Tag: v0.34~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2a4cf8f887476dcca1beb233effafc0b1e5aff25;p=ceph.git client: factor update_dentry_lease() out of insert_dentry_inode() The first bit of insert_dentry_inode() handles the details of checking whether an item still exists, un/relinking it, etc. The second bit just updates the dentry lease information. Signed-off-by: Sage Weil --- diff --git a/src/client/Client.cc b/src/client/Client.cc index f4b2e94da2ab..4c0cd2549f89 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -574,9 +574,6 @@ Dentry *Client::insert_dentry_inode(Dir *dir, const string& dname, LeaseStat *dl Inode *in, utime_t from, int mds, bool set_offset, Dentry *old_dentry) { - utime_t dttl = from; - dttl += (float)dlease->duration_ms / 1000.0; - Dentry *dn = NULL; if (dir->dentries.count(dname)) dn = dir->dentries[dname]; @@ -619,11 +616,20 @@ Dentry *Client::insert_dentry_inode(Dir *dir, const string& dname, LeaseStat *dl } } + update_dentry_lease(dn, dlease, from, mds); + return dn; +} + +void Client::update_dentry_lease(Dentry *dn, LeaseStat *dlease, utime_t from, int mds) +{ + utime_t dttl = from; + dttl += (float)dlease->duration_ms / 1000.0; + assert(dn && dn->inode); if (dlease->mask & CEPH_LOCK_DN) { if (dttl > dn->lease_ttl) { - ldout(cct, 10) << "got dentry lease on " << dname + ldout(cct, 10) << "got dentry lease on " << dn->name << " dur " << dlease->duration_ms << "ms ttl " << dttl << dendl; dn->lease_ttl = dttl; dn->lease_mds = mds; @@ -631,8 +637,7 @@ Dentry *Client::insert_dentry_inode(Dir *dir, const string& dname, LeaseStat *dl dn->lease_gen = mds_sessions[mds]->cap_gen; } } - dn->cap_shared_gen = dir->parent_inode->shared_gen; - return dn; + dn->cap_shared_gen = dn->dir->parent_inode->shared_gen; } diff --git a/src/client/Client.h b/src/client/Client.h index a29d5af453e7..a02df51bac09 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -444,6 +444,7 @@ protected: Dentry *insert_dentry_inode(Dir *dir, const string& dname, LeaseStat *dlease, Inode *in, utime_t from, int mds, bool set_offset, Dentry *old_dentry = NULL); + void update_dentry_lease(Dentry *dn, LeaseStat *dlease, utime_t from, int mds); // ----------------------