From 5fc83c8d9887d2a916af11436ccc94fcbfe59b7a Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 18 Feb 2013 17:39:46 -0800 Subject: [PATCH] os/FileStore: check replay guard on src for collection rename This avoids a problematic sequence like: - rename A/ -> B/ - remove B/1...100 - destroy B/ - create A/ - write A/101... - replay A/ -> B/ - remove B/1...100 (fails but tolerated) - destroy B/ (fails with ENOTEMPTY) Signed-off-by: Sage Weil Reviewed-by: Samuel Just --- src/os/FileStore.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index c91d47c6d0d..c53bd79b2ed 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -4169,6 +4169,10 @@ int FileStore::_collection_rename(const coll_t &cid, const coll_t &ncid, get_cdir(cid, old_coll, sizeof(old_coll)); get_cdir(ncid, new_coll, sizeof(new_coll)); + if (_check_replay_guard(cid, spos) < 0) { + return 0; + } + if (_check_replay_guard(ncid, spos) < 0) { return _collection_remove_recursive(cid, spos); } -- 2.47.3