]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: add debugging around traceless reply failures
authorSage Weil <sage@inktank.com>
Fri, 17 May 2013 19:06:18 +0000 (12:06 -0700)
committerYan, Zheng <zheng.z.yan@intel.com>
Wed, 7 May 2014 02:06:51 +0000 (10:06 +0800)
Tracking down #5021

Signed-off-by: Sage Weil <sage@inktank.com>
src/client/Client.cc

index 6e46d6da75129912eb0fae03f41aedccea097269..569f2e4842e04c9c230d7f3ad92de40cecd610fa 100644 (file)
@@ -1260,18 +1260,25 @@ int Client::verify_reply_trace(int r,
       Inode *target = 0;  // ptarget may be NULL
       Dentry *d = request->dentry();
       if (d) {
-       // rename is special: we handle old_dentry unlink explicitly in insert_dentry_inode(), so
-       // we need to compensate and do the same here.
+       // rename is special: we handle old_dentry unlink explicitly
+       // in insert_dentry_inode(), so we need to compensate and do
+       // the same here.
        Dentry *od = request->old_dentry();
        if (od) {
          unlink(od, false);
        }
-       ldout(cct, 10) << "make_request got traceless reply, looking up #"
-                      << d->dir->parent_inode->ino << "/" << d->name
-                      << " got_ino " << got_created_ino
-                      << " ino " << created_ino
-                      << dendl;
-       r = _do_lookup(d->dir->parent_inode, d->name, &target);
+
+       if (d->dir) {
+         ldout(cct, 10) << "make_request got traceless reply, looking up #"
+                        << d->dir->parent_inode->ino << "/" << d->name
+                        << " got_ino " << got_created_ino
+                        << " ino " << created_ino
+                        << dendl;
+         r = _do_lookup(d->dir->parent_inode, d->name, &target);
+       } else {
+         // if the dentry is not linked, just do our best. see #5021.
+         assert(0 == "how did this happen?  i want logs!");
+       }
       } else {
        Inode *in = request->inode();
        ldout(cct, 10) << "make_request got traceless reply, forcing getattr on #"