]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: ENOENT on null dentry in unlink()
authorSage Weil <sage@newdream.net>
Fri, 16 Jan 2009 00:44:09 +0000 (16:44 -0800)
committerSage Weil <sage@newdream.net>
Fri, 16 Jan 2009 00:44:09 +0000 (16:44 -0800)
src/mds/Server.cc

index 58b2b56be66d8b3d56534b95cf6dd723a7b191db..deb5db6ec2e16ad912fd5f6407f7ad86e39cdca4 100644 (file)
@@ -3082,7 +3082,6 @@ void Server::handle_client_unlink(MDRequest *mdr)
 
   CDentry *dn = trace[trace.size()-1];
   assert(dn);
-  CDentry::linkage_t *dnl = dn->get_linkage(client);
   
   // is it my dentry?
   if (!dn->is_auth()) {
@@ -3108,6 +3107,12 @@ void Server::handle_client_unlink(MDRequest *mdr)
     return;
   }
 
+  CDentry::linkage_t *dnl = dn->get_linkage(client);
+  if (dnl->is_null()) {
+    reply_request(mdr, -ENOENT);
+    return;
+  }
+
   // dn looks ok.
 
   // get/open inode.