]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: return only a single path segment in reply trace
authorSage Weil <sage@newdream.net>
Mon, 16 Mar 2009 17:54:10 +0000 (10:54 -0700)
committerSage Weil <sage@newdream.net>
Mon, 16 Mar 2009 17:58:05 +0000 (10:58 -0700)
This temporarily breaks the kernel client.

src/mds/Server.cc

index 556c0f07776ece74cc719ea7a884a71ea2031170..fe8127c06292ca90920158f2632d310336a90fc5 100644 (file)
@@ -710,6 +710,8 @@ void Server::set_trace_dist(Session *session, MClientReply *reply, CInode *in, C
   __u16 numi = 0, numdn = 0;
   __s16 snapdirpos = -1;
 
+  bool single_segment = true;  // do a single segment: [inode, ] dentry, dir.
+
   // choose lease duration
   utime_t now = g_clock.now();
   int lmask = 0;
@@ -756,6 +758,9 @@ void Server::set_trace_dist(Session *session, MClientReply *reply, CInode *in, C
     dout(10) << "set_trace_dist snapdiri at pos " << snapdirpos << dendl;
   }
 
+  if (single_segment && numdn)
+    goto done;
+
   if (!dn) {
     dn = in->get_projected_parent_dn();
     if (dn && !dn->use_projected(client, mdr))