Signed-off-by: liuchang0812 <liuchang0812@gmail.com>
(cherry picked from commit
eb5723d3abd4e1b6caec477090761d7919efc7bd)
Conflicts:
src/os/bluestore/BlueStore.h
Removed declarations which are not part of this backport
inject_data_error()
inject_mdata_error()
debug_data_eio()
debug_mdata_eio()
debug_oj_on_delete()
src/os/filestore/FileStore.h
Removed declarations which are not part of this backport
set<ghobject_t> data_error_set
set<ghobject_t> mdata_error_set
inject_data_error() override
inject_mdata_error() override
virtual int check(std::ostream &out, bool repair = false) { return 0; }
+ virtual void compact() {}
+
typedef KeyValueDB::GenericIteratorImpl ObjectMapIteratorImpl;
typedef ceph::shared_ptr<ObjectMapIteratorImpl> ObjectMapIterator;
virtual ObjectMapIterator get_iterator(const ghobject_t &oid) {
// DEBUG
virtual void inject_data_error(const ghobject_t &oid) {}
virtual void inject_mdata_error(const ghobject_t &oid) {}
+
+ virtual void compact() {}
};
WRITE_CLASS_ENCODER(ObjectStore::Transaction)
WRITE_CLASS_ENCODER(ObjectStore::Transaction::TransactionData)
TrackedOpRef op = TrackedOpRef(),
ThreadPool::TPHandle *handle = NULL) override;
+ void compact() override {
+ assert(db);
+ db->compact();
+ }
+
private:
// --------------------------------------------------------
// write ops
/// Ensure that all previous operations are durable
int sync(const ghobject_t *oid=0, const SequencerPosition *spos=0);
+ void compact() override {
+ assert(db);
+ db->compact();
+ }
+
/// Util, get all objects, there must be no other concurrent access
int list_objects(vector<ghobject_t> *objs ///< [out] objects
);
dout(10) << __func__ << ": init error on " << oid << dendl;
mdata_error_set.insert(oid);
}
+
void FileStore::debug_obj_on_delete(const ghobject_t &oid) {
Mutex::Locker l(read_error_lock);
dout(10) << __func__ << ": clear error on " << oid << dendl;
set<ghobject_t, ghobject_t::BitwiseComparator> mdata_error_set; // getattr(),stat() will return -EIO
void inject_data_error(const ghobject_t &oid);
void inject_mdata_error(const ghobject_t &oid);
+
+ void compact() override {
+ assert(object_map);
+ object_map->compact();
+ }
+
void debug_obj_on_delete(const ghobject_t &oid);
bool debug_data_eio(const ghobject_t &oid);
bool debug_mdata_eio(const ghobject_t &oid);
TrackedOpRef op = TrackedOpRef(),
ThreadPool::TPHandle *handle = NULL);
+ void compact () override {
+ assert(db);
+ db->compact();
+ }
+
private:
// --------------------------------------------------------
// write ops