From: Sage Weil Date: Tue, 7 Jun 2011 18:11:07 +0000 (-0700) Subject: client: fix mds selection for unlink X-Git-Tag: v0.30~102^2~19 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=084a1c747dc9ebf8b8baf37b22d9777b50335bbf;p=ceph.git client: fix mds selection for unlink It was broken when a remote link target was on another mds. Signed-off-by: Sage Weil --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 4cc621398f15..ee1ea5595892 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -6110,15 +6110,17 @@ int Client::_unlink(Inode *dir, const char *name, int uid, int gid) dir->make_nosnap_relative_path(path); path.push_dentry(name); req->set_filepath(path); - req->inode = dir; - req->dentry_drop = CEPH_CAP_FILE_SHARED; - req->dentry_unless = CEPH_CAP_FILE_EXCL; - req->inode_drop = CEPH_CAP_LINK_SHARED | CEPH_CAP_LINK_EXCL; int res = get_or_create(dir, name, &req->dentry); if (res < 0) return res; - res = _lookup(dir, name, &req->inode); + req->dentry_drop = CEPH_CAP_FILE_SHARED; + req->dentry_unless = CEPH_CAP_FILE_EXCL; + + res = _lookup(dir, name, &req->other_inode); + req->other_inode_drop = CEPH_CAP_LINK_SHARED | CEPH_CAP_LINK_EXCL; + + req->inode = dir; res = make_request(req, uid, gid); if (res == 0) {