VOID_TEMP_FAILURE_RETRY(::close(fd));
}
-void MemDB::_load()
+int MemDB::_load()
{
std::lock_guard<std::mutex> l(m_lock);
dout(10) << __func__ << " Reading MemDB from file: "<< _get_data_fn().c_str() << dendl;
int err = errno;
cerr << "can't open " << _get_data_fn().c_str() << ": "
<< cpp_strerror(err) << std::endl;
- return;
+ return -err;
}
struct stat st;
cerr << "can't stat file " << _get_data_fn().c_str() << ": "
<< cpp_strerror(err) << std::endl;
VOID_TEMP_FAILURE_RETRY(::close(fd));
- return;
+ return -err;
}
ssize_t file_size = st.st_size;
m_total_bytes += datap.length();
}
VOID_TEMP_FAILURE_RETRY(::close(fd));
+ return 0;
}
int MemDB::_init(bool create)
{
+ int r;
dout(1) << __func__ << dendl;
if (create) {
- int r = ::mkdir(m_db_path.c_str(), 0700);
+ r = ::mkdir(m_db_path.c_str(), 0700);
if (r < 0) {
r = -errno;
if (r != -EEXIST) {
derr << __func__ << " mkdir failed: " << cpp_strerror(r) << dendl;
return r;
}
+ return 0; // ignore EEXIST
}
- } else {
- _load();
- }
+ } else {
+ r = _load();
+ }
- return 0;
+ return r;
}
int MemDB::set_merge_operator(
std::string _get_data_fn();
void _encode(btree::btree_map<string, bufferptr>:: iterator iter, bufferlist &bl);
void _save();
- void _load();
+ int _load();
public:
MemDB(CephContext *c, const string &path, void *p) :