diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index a6656725e35..d18393c06ab 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -4342,13 +4342,26 @@ int FileStore::_collection_move_rename(coll_t oldcid, const ghobject_t& oldoid, _inject_failure(); + lfn_close(fd); + fd = FDRef(); + + if (r == 0) + r = lfn_unlink(oldcid, oldoid, spos, true); + + if (r == 0) + r = lfn_open(c, o, 0, &fd); + // close guard on object so we don't do this again - if (r == 0) { + if (r == 0) _close_replay_guard(**fd, spos); - } + lfn_close(fd); } + dout(10) << __func__ << " " << c << "/" << o << " from " << oldcid << "/" << oldoid + << " = " << r << dendl; + return r; + out_rm_src: // remove source if (_check_replay_guard(oldcid, oldoid, spos) > 0) {