coll_t ocid = i.get_cid();
coll_t ncid = i.get_cid();
hobject_t oid = i.get_oid();
- r = _collection_add(ocid, ncid, oid);
+ r = _collection_add(ocid, ncid, oid, spos);
}
break;
}
-int FileStore::_collection_add(coll_t c, coll_t cid, const hobject_t& o)
+int FileStore::_collection_add(coll_t c, coll_t cid, const hobject_t& o,
+ const SequencerPosition& spos)
{
dout(15) << "collection_add " << c << "/" << o << " " << cid << "/" << o << dendl;
+
+ if (!_check_replay_guard(c, o, spos))
+ return 0;
+
int r = lfn_link(cid, c, o);
+
+ // set guard on object so we don't do this again
+ if (r >= 0) {
+ int fd = lfn_open(c, o, 0);
+ assert(fd >= 0);
+ _set_replay_guard(fd, spos);
+ TEMP_FAILURE_RETRY(::close(fd));
+ }
+
dout(10) << "collection_add " << c << "/" << o << " " << cid << "/" << o << " = " << r << dendl;
return r;
}
int _create_collection(coll_t c);
int _destroy_collection(coll_t c);
- int _collection_add(coll_t c, coll_t ocid, const hobject_t& o);
+ int _collection_add(coll_t c, coll_t ocid, const hobject_t& o,
+ const SequencerPosition& spos);
int _collection_remove(coll_t c, const hobject_t& o);
int _collection_move(coll_t c, coll_t ocid, const hobject_t& o);