mirror of
https://github.com/ceph/ceph
synced 2025-03-06 16:28:28 +00:00
client: unlink dentry on traceless rmdir, unlink reply
This used to be handled in _unlink() and _rmdir() even when a trace was present in the reply, but this is cleaner. Signed-off-by: Sage Weil <sage@inktank.com>
This commit is contained in:
parent
627e644c35
commit
8f3409d1d2
@ -1006,14 +1006,17 @@ Inode* Client::insert_trace(MetaRequest *request, MetaSession *session)
|
||||
}
|
||||
|
||||
if (d && reply->get_result() == 0) {
|
||||
Dentry *od = request->old_dentry();
|
||||
if (od) {
|
||||
if (request->head.op == CEPH_MDS_OP_RENAME) {
|
||||
// rename
|
||||
Dentry *od = request->old_dentry();
|
||||
ldout(cct, 10) << " unlinking rename src dn " << od << " for traceless reply" << dendl;
|
||||
assert(od);
|
||||
unlink(od, false, false);
|
||||
} else if (request->head.op == CEPH_MDS_OP_RMDIR ||
|
||||
request->head.op == CEPH_MDS_OP_UNLINK) {
|
||||
// unlink, rmdir
|
||||
// ...
|
||||
ldout(cct, 10) << " unlinking unlink/rmdir dn " << d << " for traceless reply" << dendl;
|
||||
unlink(d, true, true);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user