From ad6f0cfb6d1076ce136ef4f28830370b7c440be3 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Sun, 28 Dec 2014 12:08:25 +0800 Subject: [PATCH] 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 --- src/client/Client.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 0232891473378..938560ee05ce7 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); -- 2.39.5