]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: handle empty xattrs
authorSage Weil <sage@newdream.net>
Mon, 19 May 2008 17:30:03 +0000 (10:30 -0700)
committerSage Weil <sage@newdream.net>
Mon, 19 May 2008 17:30:03 +0000 (10:30 -0700)
src/mds/Server.cc

index 0f170d47583c44b43d58fbd11752117745ca73fa..c649576be21eba5ff7c88f76bb541c683fbedd57 100644 (file)
@@ -1791,7 +1791,8 @@ void Server::handle_client_setxattr(MDRequest *mdr)
     return;
   }
 
-  dout(10) << "setxattr '" << name << "' on " << *cur << dendl;
+  int len = req->get_data().length();
+  dout(10) << "setxattr '" << name << "' len " << len << " on " << *cur << dendl;
 
   // project update
   inode_t *pi = cur->project_inode();
@@ -1799,13 +1800,14 @@ void Server::handle_client_setxattr(MDRequest *mdr)
   pi->ctime = g_clock.real_now();
 
   cur->xattrs.erase(name);
-  int len = req->get_data().length();
-  cur->xattrs[name] = buffer::create(len);
-  req->get_data().copy(0, len, cur->xattrs[name].c_str());
+  if (len) {
+    cur->xattrs[name] = buffer::create(len);
+    req->get_data().copy(0, len, cur->xattrs[name].c_str());
+  }
   
   // log + wait
   mdr->ls = mdlog->get_current_segment();
-  EUpdate *le = new EUpdate(mdlog, "chown");
+  EUpdate *le = new EUpdate(mdlog, "setxattr");
   le->metablob.add_client_req(req->get_reqid());
   le->metablob.add_dir_context(cur->get_parent_dir());
   le->metablob.add_primary_dentry(cur->parent, true, 0, pi);
@@ -1850,7 +1852,7 @@ void Server::handle_client_removexattr(MDRequest *mdr)
   
   // log + wait
   mdr->ls = mdlog->get_current_segment();
-  EUpdate *le = new EUpdate(mdlog, "chown");
+  EUpdate *le = new EUpdate(mdlog, "removexattr");
   le->metablob.add_client_req(req->get_reqid());
   le->metablob.add_dir_context(cur->get_parent_dir());
   le->metablob.add_primary_dentry(cur->parent, true, 0, pi);