fd = TEMP_FAILURE_RETRY(::open(fn.c_str(), flags, 0644));
if (fd < 0) {
int err = errno;
- dout(2) << "FileJournal::_open: unable to open journal: open() failed: "
- << cpp_strerror(err) << dendl;
+ dout(2) << "FileJournal::_open unable to open journal "
+ << fn << ": " << cpp_strerror(err) << dendl;
return -err;
}
}
}
-void FileJournal::make_writeable()
+int FileJournal::make_writeable()
{
- _open(true);
+ dout(10) << __func__ << dendl;
+ int r = _open(true);
+ if (r < 0)
+ return r;
if (read_pos > 0)
write_pos = read_pos;
must_write_header = true;
start_writer();
+ return 0;
}
void FileJournal::wrap_read_bl(
// writes
virtual bool is_writeable() = 0;
- virtual void make_writeable() = 0;
+ virtual int make_writeable() = 0;
virtual void submit_entry(uint64_t seq, bufferlist& e, int alignment,
Context *oncommit,
TrackedOpRef osd_op = TrackedOpRef()) = 0;
submit_manager.set_op_seq(op_seq);
// done reading, make writeable.
- journal->make_writeable();
+ err = journal->make_writeable();
+ if (err < 0)
+ return err;
return count;
}