From: Yan, Zheng Date: Sun, 28 Dec 2014 04:08:25 +0000 (+0800) Subject: client: remove snapshot dentry during rmsnap X-Git-Tag: v0.93~87^2~13 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ad6f0cfb6d1076ce136ef4f28830370b7c440be3;p=ceph.git client: remove snapshot dentry during rmsnap reply of RMSNAP request has no trace, we need to invalidate the snapshot dentry manually Signed-off-by: Yan, Zheng --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 023289147337..938560ee05ce 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -9236,12 +9236,16 @@ int Client::_rmdir(Inode *dir, const char *name, int uid, int gid) int res = get_or_create(dir, name, &de); if (res < 0) goto fail; - req->set_dentry(de); Inode *in; res = _lookup(dir, name, &in); if (res < 0) goto fail; - req->set_inode(in); + if (req->get_op() == CEPH_MDS_OP_RMDIR) { + req->set_dentry(de); + req->set_inode(in); + } else { + unlink(de, true, true); + } res = make_request(req, uid, gid);