block_all.clear();
_stop_alloc();
file_map.clear();
- for (auto& p : dir_map) {
- delete p.second;
- }
+ dir_map.clear();
super = bluefs_super_t();
log_t.clear();
}
<< dendl;
FileRef file = _get_file(ino);
assert(file->fnode.ino);
- map<string,Dir*>::iterator q = dir_map.find(dirname);
+ map<string,DirRef>::iterator q = dir_map.find(dirname);
assert(q != dir_map.end());
map<string,FileRef>::iterator r = q->second->file_map.find(filename);
assert(r == q->second->file_map.end());
::decode(filename, p);
dout(20) << __func__ << " " << pos << ": op_dir_unlink "
<< " " << dirname << "/" << filename << dendl;
- map<string,Dir*>::iterator q = dir_map.find(dirname);
+ map<string,DirRef>::iterator q = dir_map.find(dirname);
assert(q != dir_map.end());
map<string,FileRef>::iterator r = q->second->file_map.find(filename);
assert(r != q->second->file_map.end());
::decode(dirname, p);
dout(20) << __func__ << " " << pos << ": op_dir_create " << dirname
<< dendl;
- map<string,Dir*>::iterator q = dir_map.find(dirname);
+ map<string,DirRef>::iterator q = dir_map.find(dirname);
assert(q == dir_map.end());
dir_map[dirname] = new Dir;
}
::decode(dirname, p);
dout(20) << __func__ << " " << pos << ": op_dir_remove " << dirname
<< dendl;
- map<string,Dir*>::iterator q = dir_map.find(dirname);
+ map<string,DirRef>::iterator q = dir_map.find(dirname);
assert(q != dir_map.end());
assert(q->second->file_map.empty());
- delete q->second;
dir_map.erase(q);
}
break;
{
Mutex::Locker l(lock);
dout(10) << __func__ << " " << dirname << "/" << filename << dendl;
- map<string,Dir*>::iterator p = dir_map.find(dirname);
- Dir *dir;
+ map<string,DirRef>::iterator p = dir_map.find(dirname);
+ DirRef dir;
if (p == dir_map.end()) {
// implicitly create the dir
dout(20) << __func__ << " dir " << dirname
Mutex::Locker l(lock);
dout(10) << __func__ << " " << dirname << "/" << filename
<< (random ? " (random)":" (sequential)") << dendl;
- map<string,Dir*>::iterator p = dir_map.find(dirname);
+ map<string,DirRef>::iterator p = dir_map.find(dirname);
if (p == dir_map.end()) {
dout(20) << __func__ << " dir " << dirname << " not found" << dendl;
return -ENOENT;
}
- Dir *dir = p->second;
+ DirRef dir = p->second;
map<string,FileRef>::iterator q = dir->file_map.find(filename);
if (q == dir->file_map.end()) {
Mutex::Locker l(lock);
dout(10) << __func__ << " " << old_dirname << "/" << old_filename
<< " -> " << new_dirname << "/" << new_filename << dendl;
- map<string,Dir*>::iterator p = dir_map.find(old_dirname);
+ map<string,DirRef>::iterator p = dir_map.find(old_dirname);
if (p == dir_map.end()) {
dout(20) << __func__ << " dir " << old_dirname << " not found" << dendl;
return -ENOENT;
}
- Dir *old_dir = p->second;
+ DirRef old_dir = p->second;
map<string,FileRef>::iterator q = old_dir->file_map.find(old_filename);
if (q == old_dir->file_map.end()) {
dout(20) << __func__ << " dir " << old_dirname << " (" << old_dir
dout(20) << __func__ << " dir " << new_dirname << " not found" << dendl;
return -ENOENT;
}
- Dir *new_dir = p->second;
+ DirRef new_dir = p->second;
q = new_dir->file_map.find(new_filename);
if (q != new_dir->file_map.end()) {
dout(20) << __func__ << " dir " << new_dirname << " (" << old_dir
{
Mutex::Locker l(lock);
dout(10) << __func__ << " " << dirname << dendl;
- map<string,Dir*>::iterator p = dir_map.find(dirname);
+ map<string,DirRef>::iterator p = dir_map.find(dirname);
if (p != dir_map.end()) {
dout(20) << __func__ << " dir " << dirname << " exists" << dendl;
return -EEXIST;
{
Mutex::Locker l(lock);
dout(10) << __func__ << " " << dirname << dendl;
- map<string,Dir*>::iterator p = dir_map.find(dirname);
+ map<string,DirRef>::iterator p = dir_map.find(dirname);
if (p == dir_map.end()) {
dout(20) << __func__ << " dir " << dirname << " does not exist" << dendl;
return -ENOENT;
}
- Dir *dir = p->second;
+ DirRef dir = p->second;
if (!dir->file_map.empty()) {
dout(20) << __func__ << " dir " << dirname << " not empty" << dendl;
return -ENOTEMPTY;
bool BlueFS::dir_exists(const string& dirname)
{
Mutex::Locker l(lock);
- map<string,Dir*>::iterator p = dir_map.find(dirname);
+ map<string,DirRef>::iterator p = dir_map.find(dirname);
bool exists = p != dir_map.end();
dout(10) << __func__ << " " << dirname << " = " << (int)exists << dendl;
return exists;
{
Mutex::Locker l(lock);
dout(10) << __func__ << " " << dirname << "/" << filename << dendl;
- map<string,Dir*>::iterator p = dir_map.find(dirname);
+ map<string,DirRef>::iterator p = dir_map.find(dirname);
if (p == dir_map.end()) {
dout(20) << __func__ << " dir " << dirname << " not found" << dendl;
return -ENOENT;
}
- Dir *dir = p->second;
+ DirRef dir = p->second;
map<string,FileRef>::iterator q = dir->file_map.find(filename);
if (q == dir->file_map.end()) {
dout(20) << __func__ << " dir " << dirname << " (" << dir
{
Mutex::Locker l(lock);
dout(10) << __func__ << " " << dirname << "/" << filename << dendl;
- map<string,Dir*>::iterator p = dir_map.find(dirname);
+ map<string,DirRef>::iterator p = dir_map.find(dirname);
if (p == dir_map.end()) {
dout(20) << __func__ << " dir " << dirname << " not found" << dendl;
return -ENOENT;
}
- Dir *dir = p->second;
+ DirRef dir = p->second;
map<string,FileRef>::iterator q = dir->file_map.find(filename);
File *file;
if (q == dir->file_map.end()) {
}
} else {
// list files in dir
- map<string,Dir*>::iterator p = dir_map.find(dirname);
+ map<string,DirRef>::iterator p = dir_map.find(dirname);
if (p == dir_map.end()) {
dout(20) << __func__ << " dir " << dirname << " not found" << dendl;
return -ENOENT;
}
- Dir *dir = p->second;
+ DirRef dir = p->second;
ls->reserve(dir->file_map.size() + 2);
for (auto& q : dir->file_map) {
ls->push_back(q.first);
{
Mutex::Locker l(lock);
dout(10) << __func__ << " " << dirname << "/" << filename << dendl;
- map<string,Dir*>::iterator p = dir_map.find(dirname);
+ map<string,DirRef>::iterator p = dir_map.find(dirname);
if (p == dir_map.end()) {
dout(20) << __func__ << " dir " << dirname << " not found" << dendl;
return -ENOENT;
}
- Dir *dir = p->second;
+ DirRef dir = p->second;
map<string,FileRef>::iterator q = dir->file_map.find(filename);
if (q == dir->file_map.end()) {
dout(20) << __func__ << " file " << dirname << "/" << filename