]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: some lease packaging cleanup
authorSage Weil <sage@newdream.net>
Wed, 26 Mar 2008 16:19:27 +0000 (09:19 -0700)
committerSage Weil <sage@newdream.net>
Wed, 26 Mar 2008 16:19:27 +0000 (09:19 -0700)
src/client/Client.cc
src/mds/Locker.cc
src/mds/Locker.h
src/mds/Server.cc
src/messages/MClientReply.h

index 8b3131e98f2cb8a1986676554fbe3d08a7f315f0..8e71e96cb6ad6ec5adbf4f4165bd381b78923bde 100644 (file)
@@ -317,7 +317,7 @@ void Client::trim_cache()
 }
 
 
-void Client::update_inode(Inode *in, InodeStat *st, utime_t ttl)
+void Client::update_inode(Inode *in, InodeStat *st, ceph_mds_reply_lease *l, utime_t ttl)
 {
   dout(12) << "update_inode stat mask is " << st->mask << dendl;
   if (st->mask & CEPH_STAT_MASK_INODE) {
index 6c8a327c453307c9ec2a0a82b231fccc32ef8bd9..1bb2c0f4d386886548b8ac2214fde38f9b37878a 100644 (file)
@@ -1018,24 +1018,9 @@ void Locker::handle_client_lease(MClientLease *m)
 }
 
 
-void Locker::decide_client_lease(CInode *in, int mask, int pool, int client)
-{
-  mask = CEPH_LOCK_INO;
-  pool = 1;   // fixme.. do something smart!
-  if (in->authlock.can_rdlock(0)) mask |= CEPH_LOCK_IAUTH;
-  if (in->linklock.can_rdlock(0)) mask |= CEPH_LOCK_ILINK;
-  if (in->filelock.can_rdlock(0)) mask |= CEPH_LOCK_IFILE;
-}
 
-void Locker::decide_client_lease(CDentry *dn, int mask, int pool, int client)
-{
-  pool = 1;   // fixme.. do something smart!
-  mask = 0;
-  if (dn->lock.can_rdlock(0)) mask |= CEPH_LOCK_DN;
-}
-
-void Locker::issue_client_lease(MDSCacheObject *p, int mask, int pool, int client,
-                               bufferlist &bl, utime_t now, Session *session)
+void Locker::_issue_client_lease(MDSCacheObject *p, int mask, int pool, int client,
+                                bufferlist &bl, utime_t now, Session *session)
 {
   if (mask) {
     ClientLease *l = p->add_client_lease(client, mask);
@@ -1053,6 +1038,31 @@ void Locker::issue_client_lease(MDSCacheObject *p, int mask, int pool, int clien
   
 
 
+int Locker::issue_client_lease(CInode *in, int client, 
+                               bufferlist &bl, utime_t now, Session *session)
+{
+  int mask = CEPH_LOCK_INO;
+  int pool = 1;   // fixme.. do something smart!
+  if (in->authlock.can_rdlock(0)) mask |= CEPH_LOCK_IAUTH;
+  if (in->linklock.can_rdlock(0)) mask |= CEPH_LOCK_ILINK;
+  if (in->filelock.can_rdlock(0)) mask |= CEPH_LOCK_IFILE;
+
+  _issue_client_lease(in, mask, pool, client, bl, now, session);
+  return mask;
+}
+
+int Locker::issue_client_lease(CDentry *dn, int client,
+                               bufferlist &bl, utime_t now, Session *session)
+{
+  int pool = 1;   // fixme.. do something smart!
+  int mask = 0;
+  if (dn->lock.can_rdlock(0)) mask |= CEPH_LOCK_DN;
+
+  _issue_client_lease(dn, mask, pool, client, bl, now, session);
+  return mask;
+}
+
+
 
 
 
index 894b7c5d15cef1b0201e039dfebea0085f773af2..996c5712a5f5c8bf5ea1d6f30162d9172cee195a 100644 (file)
@@ -205,10 +205,9 @@ protected:
 public:
   void handle_client_lease(class MClientLease *m);
 
-  void decide_client_lease(CInode *in, int mask, int pool, int client);
-  void decide_client_lease(CDentry *dn, int mask, int pool, int client);
-  void issue_client_lease(MDSCacheObject *p, int mask, int pool, int client,
-                         bufferlist &bl, utime_t now, Session *session);
+  void _issue_client_lease(MDSCacheObject *p, int mask, int pool, int client, bufferlist &bl, utime_t now, Session *session);
+  int issue_client_lease(CInode *in, int client, bufferlist &bl, utime_t now, Session *session);
+  int issue_client_lease(CDentry *dn, int client, bufferlist &bl, utime_t now, Session *session);
 
 };
 
index c096f48347f317d5dde6aa1ca3a4ca6bdf429937..d5c2869aec2428581c0653a42cddd9c5354f18a5 100644 (file)
@@ -583,8 +583,7 @@ void Server::set_trace_dist(Session *session, MClientReply *reply, CInode *in, C
 
   // choose lease duration
   utime_t now = g_clock.now();
-
-  int lmask, lpool;
+  int lmask;
 
   // start with dentry or inode?
   if (!in) {
@@ -595,8 +594,7 @@ void Server::set_trace_dist(Session *session, MClientReply *reply, CInode *in, C
 
  inode:
   InodeStat::_encode(bl, in);
-  mds->locker->decide_client_lease(in, lmask, lpool, client);
-  mds->locker->issue_client_lease(in, lmask, lpool, client, bl, now, session);
+  lmask = mds->locker->issue_client_lease(in, client, bl, now, session);
   numi++;
   dout(20) << " trace added " << lmask << " " << *in << dendl;
 
@@ -607,10 +605,9 @@ void Server::set_trace_dist(Session *session, MClientReply *reply, CInode *in, C
 
  dentry:
   ::_encode_simple(dn->get_name(), bl);
-  mds->locker->decide_client_lease(dn, lmask, lpool, client);
-  mds->locker->issue_client_lease(dn, lmask, lpool, client, bl, now, session);
+  lmask = mds->locker->issue_client_lease(dn, client, bl, now, session);
   numdn++;
-  dout(20) << " trace added " << (int)lmask << " " << *dn << dendl;
+  dout(20) << " trace added " << lmask << " " << *dn << dendl;
   
   // dir
   DirStat::_encode(bl, dn->get_dir(), whoami);
@@ -1779,15 +1776,12 @@ void Server::handle_client_readdir(MDRequest *mdr)
     dout(12) << "including inode " << *in << dendl;
     
     // dentry
-    int lmask, lpool;
     ::_encode(it->first, dnbl);
-    mds->locker->decide_client_lease(dn, lmask, lpool, client);
-    mds->locker->issue_client_lease(dn, lmask, lpool, client, dnbl, mdr->now, mdr->session);
+    mds->locker->issue_client_lease(dn, client, dnbl, mdr->now, mdr->session);
 
     // inode
     InodeStat::_encode(dnbl, in);
-    mds->locker->decide_client_lease(in, lmask, lpool, client);
-    mds->locker->issue_client_lease(in, lmask, lpool, client, dnbl, mdr->now, mdr->session);
+    mds->locker->issue_client_lease(in, client, dnbl, mdr->now, mdr->session);
     numfiles++;
 
     // touch dn
index bb0900ad953c1ce9de480b8f5e3fdc2ae90301d9..669ce96a4b20cfd099a8c683379cd6b9235da803 100644 (file)
@@ -164,10 +164,12 @@ class MClientReply : public Message {
   // reply data
   struct ceph_mds_reply_head st;
  
+  /*
   list<InodeStat*> trace_in;
   list<DirStat*>   trace_dir;
   list<string>     trace_dn;
   list<char>       trace_dn_mask;
+  */
   bufferlist trace_bl;
 
   DirStat *dir_dir;
@@ -273,6 +275,10 @@ class MClientReply : public Message {
     ::_encode_simple(numdn, trace_bl);
     trace_bl.claim_append(bl);
   }
+  bufferlist& get_trace_bl() {
+    return trace_bl;
+  }
+  /*
   void _decode_trace() {
     bufferlist::iterator p = trace_bl.begin();
     __u16 numi, numdn;
@@ -323,7 +329,7 @@ class MClientReply : public Message {
     if (trace_in.empty() && trace_bl.length()) _decode_trace();
     return trace_dn_mask; 
   }
-
+  */
 
 };