mirror of
https://github.com/ceph/ceph
synced 2025-01-11 21:50:26 +00:00
FileStore::_collection_move_rename: remove source before closing guard
Fixes a bug in _collection_move_rename replays. Signed-off-by: Samuel Just <sam.just@inktank.com>
This commit is contained in:
parent
06f7a98a03
commit
b7d100b697
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user