]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
uclient: More debugging. May want to back off the inode printout to
authorGreg Farnum <gregf@hq.newdream.net>
Mon, 21 Sep 2009 20:11:52 +0000 (13:11 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Tue, 22 Sep 2009 20:02:50 +0000 (13:02 -0700)
not include caps_issued.

src/client/Client.cc

index d632acafb99724a0870cccb86a98406528ed75da..48965964dd539c793de088792780e2c8d6cd9dfa 100644 (file)
@@ -84,7 +84,8 @@ ostream& operator<<(ostream &out, Inode &in)
   out << in.vino() << "("
       << " cap_refs=" << in.cap_refs
       << " open=" << in.open_by_mode
-      << " ref=" << in.ref;
+      << " ref=" << in.ref
+      << " caps=" << ccap_string(in.caps_issued());
   if (in.dirty_caps)
     out << " dirty_caps=" << ccap_string(in.dirty_caps);
   if (in.flushing_caps)
@@ -916,17 +917,19 @@ int Client::encode_inode_release(Inode *in, MClientRequest *req,
                         int mds, int drop,
                         int unless, int force)
 {
-  dout(20) << "encode_inode_release enter(in:" << in << ", req:" << req
+  dout(20) << "encode_inode_release enter(in:" << *in << ", req:" << req
           << " mds:" << mds << ", drop:" << drop << ", unless:" << unless
-          << ", force:" << force << ")" << dendl;
+          << ", have:" << ", force:" << force << ")" << dendl;
   int released = 0;
   InodeCap *caps = in->caps[mds];
   if (drop & caps->issued &&
       !(unless & caps->issued)) {
+    dout(25) << "Dropping caps. Initial " << ccap_string(caps->issued) << dendl;
     caps->issued &= ~drop;
     caps->implemented &= ~drop;
     released = 1;
     force = 1;
+    dout(25) << "Now have: " << ccap_string(caps->issued) << dendl;
   }
   if (force) {
     ceph_mds_request_release rel;
@@ -941,7 +944,7 @@ int Client::encode_inode_release(Inode *in, MClientRequest *req,
     rel.dname_seq = 0;
     req->releases.push_back(MClientRequest::Release(rel,""));
   }
-  dout(25) << "encode_inode_release exit(in:" << in << ") released:"
+  dout(25) << "encode_inode_release exit(in:" << *in << ") released:"
           << released << dendl;
   return released;
 }
@@ -3003,7 +3006,8 @@ int Client::get_or_create(Inode *dir, const char* name,
                          Dentry **pdn, bool expect_null)
 {
   // lookup
-  if (dir->dir && dir->dir->dentries.count(name)) {
+  dir->open_dir();
+  if (dir->dir->dentries.count(name)) {
     Dentry *dn = *pdn = dir->dir->dentries[name];
     
     // is dn lease valid?