From: Greg Farnum Date: Tue, 14 Jul 2009 21:07:45 +0000 (-0700) Subject: Client: Rewrote mkdirs to avoid possible race condition. X-Git-Tag: v0.11~83 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=26905ca82776e8119a347a9a2e8d65c272c7ed62;p=ceph.git Client: Rewrote mkdirs to avoid possible race condition. And added _ to some _mkdir debugging output. --- diff --git a/src/client/Client.cc b/src/client/Client.cc index d3ab86235cac..c5f7b727d2c0 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -2938,6 +2938,7 @@ int Client::mkdirs(const char *relpath, mode_t mode) tout << relpath << std::endl; tout << mode << std::endl; + //get through existing parts of path filepath path(relpath); unsigned int i; int r; @@ -2946,20 +2947,28 @@ int Client::mkdirs(const char *relpath, mode_t mode) for (i=0; (r=_lookup(cur, path[i].c_str(), &next))==0 && iino).getpath() << dendl; } return 0; } @@ -4774,11 +4783,11 @@ int Client::_mkdir(Inode *dir, const char *name, mode_t mode, int uid, int gid) dout(10) << "_mkdir: making request" << dendl; int res = make_request(req, uid, gid); - dout(10) << "mkdir result is " << res << dendl; + dout(10) << "_mkdir result is " << res << dendl; trim_cache(); - dout(3) << "mkdir(" << path << ", 0" << oct << mode << dec << ") = " << res << dendl; + dout(3) << "_mkdir(" << path << ", 0" << oct << mode << dec << ") = " << res << dendl; return res; }