Signed-off-by: Sage Weil <sage@redhat.com>
delete log_writer;
log_writer = NULL;
block_all.clear();
- alloc.clear();
+ _stop_alloc();
dout(10) << __func__ << " success" << dendl;
return 0;
}
}
+void BlueFS::_stop_alloc()
+{
+ dout(20) << __func__ << dendl;
+ for (auto p : alloc) {
+ delete p;
+ }
+ alloc.clear();
+}
+
int BlueFS::mount()
{
dout(1) << __func__ << dendl;
delete log_writer;
log_writer = NULL;
- for (auto p : alloc) {
- delete p;
- }
- alloc.clear();
block_all.clear();
+ _stop_alloc();
file_map.clear();
for (auto& p : dir_map) {
delete p.second;
atomic_t num_reading;
File()
- : RefCountedObject(0),
+ : RefCountedObject(NULL, 0),
refs(0),
dirty(false),
locked(false),
assert(num_readers.read() == 0);
assert(num_writers.read() == 0);
assert(num_reading.read() == 0);
+ assert(!locked);
}
friend void intrusive_ptr_add_ref(File *f) {
vector<Allocator*> alloc; ///< allocators for bdevs
void _init_alloc();
+ void _stop_alloc();
void _pad_bl(bufferlist& bl); ///< pad bufferlist to block size w/ zeros