}
int BlueFS::open_for_write(
- const string& dirname,
- const string& filename,
+ std::string_view dirname,
+ std::string_view filename,
FileWriter **h,
bool overwrite)
{
file = ceph::make_ref<File>();
file->fnode.ino = ++ino_last;
file_map[ino_last] = file;
- dir->file_map[filename] = file;
+ dir->file_map[string{filename}] = file;
++file->refs;
create = true;
} else {
}
int BlueFS::open_for_read(
- const string& dirname,
- const string& filename,
+ std::string_view dirname,
+ std::string_view filename,
FileReader **h,
bool random)
{
}
int BlueFS::rename(
- const string& old_dirname, const string& old_filename,
- const string& new_dirname, const string& new_filename)
+ std::string_view old_dirname, std::string_view old_filename,
+ std::string_view new_dirname, std::string_view new_filename)
{
std::lock_guard l(lock);
dout(10) << __func__ << " " << old_dirname << "/" << old_filename
dout(10) << __func__ << " " << new_dirname << "/" << new_filename << " "
<< " " << file->fnode << dendl;
- new_dir->file_map[new_filename] = file;
- old_dir->file_map.erase(old_filename);
+ new_dir->file_map[string{new_filename}] = file;
+ old_dir->file_map.erase(string{old_filename});
log_t.op_dir_link(new_dirname, new_filename, file->fnode.ino);
log_t.op_dir_unlink(old_dirname, old_filename);
return 0;
}
-int BlueFS::mkdir(const string& dirname)
+int BlueFS::mkdir(std::string_view dirname)
{
std::lock_guard l(lock);
dout(10) << __func__ << " " << dirname << dendl;
dout(20) << __func__ << " dir " << dirname << " exists" << dendl;
return -EEXIST;
}
- dir_map[dirname] = ceph::make_ref<Dir>();
+ dir_map[string{dirname}] = ceph::make_ref<Dir>();
log_t.op_dir_create(dirname);
return 0;
}
-int BlueFS::rmdir(const string& dirname)
+int BlueFS::rmdir(std::string_view dirname)
{
std::lock_guard l(lock);
dout(10) << __func__ << " " << dirname << dendl;
- map<string,DirRef>::iterator p = dir_map.find(dirname);
+ auto p = dir_map.find(dirname);
if (p == dir_map.end()) {
dout(20) << __func__ << " dir " << dirname << " does not exist" << dendl;
return -ENOENT;
dout(20) << __func__ << " dir " << dirname << " not empty" << dendl;
return -ENOTEMPTY;
}
- dir_map.erase(dirname);
+ dir_map.erase(string{dirname});
log_t.op_dir_remove(dirname);
return 0;
}
-bool BlueFS::dir_exists(const string& dirname)
+bool BlueFS::dir_exists(std::string_view dirname)
{
std::lock_guard l(lock);
map<string,DirRef>::iterator p = dir_map.find(dirname);
return exists;
}
-int BlueFS::stat(const string& dirname, const string& filename,
+int BlueFS::stat(std::string_view dirname, std::string_view filename,
uint64_t *size, utime_t *mtime)
{
std::lock_guard l(lock);
return 0;
}
-int BlueFS::lock_file(const string& dirname, const string& filename,
+int BlueFS::lock_file(std::string_view dirname, std::string_view filename,
FileLock **plock)
{
std::lock_guard l(lock);
return -ENOENT;
}
DirRef dir = p->second;
- map<string,FileRef>::iterator q = dir->file_map.find(filename);
+ auto q = dir->file_map.find(filename);
FileRef file;
if (q == dir->file_map.end()) {
dout(20) << __func__ << " dir " << dirname << " (" << dir
file->fnode.ino = ++ino_last;
file->fnode.mtime = ceph_clock_now();
file_map[ino_last] = file;
- dir->file_map[filename] = file;
+ dir->file_map[string{filename}] = file;
++file->refs;
log_t.op_file_update(file->fnode);
log_t.op_dir_link(dirname, filename, file->fnode.ino);
return 0;
}
-int BlueFS::readdir(const string& dirname, vector<string> *ls)
+int BlueFS::readdir(std::string_view dirname, vector<string> *ls)
{
std::lock_guard l(lock);
dout(10) << __func__ << " " << dirname << dendl;
return 0;
}
-int BlueFS::unlink(const string& dirname, const string& filename)
+int BlueFS::unlink(std::string_view dirname, std::string_view filename)
{
std::lock_guard l(lock);
dout(10) << __func__ << " " << dirname << "/" << filename << dendl;
<< " is locked" << dendl;
return -EBUSY;
}
- dir->file_map.erase(filename);
+ dir->file_map.erase(string{filename});
log_t.op_dir_unlink(dirname, filename);
_drop_link(file);
return 0;
void* OriginalVolumeSelector::get_hint_for_log() const {
return reinterpret_cast<void*>(BlueFS::BDEV_WAL);
}
-void* OriginalVolumeSelector::get_hint_by_dir(const string& dirname) const {
+void* OriginalVolumeSelector::get_hint_by_dir(std::string_view dirname) const {
uint8_t res = BlueFS::BDEV_DB;
if (dirname.length() > 5) {
// the "db.slow" and "db.wal" directory names are hard-coded at
virtual ~BlueFSVolumeSelector() {
}
virtual void* get_hint_for_log() const = 0;
- virtual void* get_hint_by_dir(const std::string& dirname) const = 0;
+ virtual void* get_hint_by_dir(std::string_view dirname) const = 0;
virtual void add_usage(void* file_hint, const bluefs_fnode_t& fnode) = 0;
virtual void sub_usage(void* file_hint, const bluefs_fnode_t& fnode) = 0;
int get_block_extents(unsigned id, interval_set<uint64_t> *extents);
int open_for_write(
- const std::string& dir,
- const std::string& file,
+ std::string_view dir,
+ std::string_view file,
FileWriter **h,
bool overwrite);
int open_for_read(
- const std::string& dir,
- const std::string& file,
+ std::string_view dir,
+ std::string_view file,
FileReader **h,
bool random = false);
_close_writer(h);
}
- int rename(const std::string& old_dir, const std::string& old_file,
- const std::string& new_dir, const std::string& new_file);
+ int rename(std::string_view old_dir, std::string_view old_file,
+ std::string_view new_dir, std::string_view new_file);
- int readdir(const std::string& dirname, std::vector<std::string> *ls);
+ int readdir(std::string_view dirname, std::vector<std::string> *ls);
- int unlink(const std::string& dirname, const std::string& filename);
- int mkdir(const std::string& dirname);
- int rmdir(const std::string& dirname);
+ int unlink(std::string_view dirname, std::string_view filename);
+ int mkdir(std::string_view dirname);
+ int rmdir(std::string_view dirname);
bool wal_is_rotational();
- bool dir_exists(const std::string& dirname);
- int stat(const std::string& dirname, const std::string& filename,
+ bool dir_exists(std::string_view dirname);
+ int stat(std::string_view dirname, std::string_view filename,
uint64_t *size, utime_t *mtime);
- int lock_file(const std::string& dirname, const std::string& filename, FileLock **p);
+ int lock_file(std::string_view dirname, std::string_view filename, FileLock **p);
int unlock_file(FileLock *l);
void compact_log();
: wal_total(_wal_total), db_total(_db_total), slow_total(_slow_total) {}
void* get_hint_for_log() const override;
- void* get_hint_by_dir(const std::string& dirname) const override;
+ void* get_hint_by_dir(std::string_view dirname) const override;
void add_usage(void* hint, const bluefs_fnode_t& fnode) override {
// do nothing