]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: factor update_dentry_lease() out of insert_dentry_inode()
authorSage Weil <sage@newdream.net>
Wed, 24 Aug 2011 23:25:49 +0000 (16:25 -0700)
committerSage Weil <sage@newdream.net>
Wed, 24 Aug 2011 23:25:49 +0000 (16:25 -0700)
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 <sage@newdream.net>
src/client/Client.cc
src/client/Client.h

index f4b2e94da2ab899d70d640c4b9791df44fb9d003..4c0cd2549f89c46452bec6ad3048306875a95799 100644 (file)
@@ -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;
 }
 
 
index a29d5af453e7e5ad4dd81f9ceb88faca672feccf..a02df51bac09605d774c3bdaeeabfac69fba987b 100644 (file)
@@ -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);
 
 
   // ----------------------