}
bool slave_did_prepare() { return more()->slave_commit; }
-
+
+ bool did_ino_allocation() {
+ return alloc_ino || used_prealloc_ino || prealloc_inos.size();
+ }
void print(ostream &out) {
out << "request(" << reqid;
// -------------------------------------------------
-void MDLog::submit_entry( LogEvent *le, Context *c )
+void MDLog::submit_entry( LogEvent *le, Context *c, bool wait_safe )
{
if (!g_conf.mds_log) {
// hack: log is disabled.
if (c) {
unflushed = 0;
- journaler->flush(c);
+ journaler->flush(wait_safe ? 0:c);
+ if (wait_safe)
+ journaler->wait_for_flush(0, c);
}
else
unflushed++;
bool is_capped() { return capped; }
void cap();
- void submit_entry( LogEvent *e, Context *c = 0 );
+ void submit_entry( LogEvent *e, Context *c = 0, bool wait_for_safe=false );
void wait_for_sync( Context *c );
void wait_for_safe( Context *c );
void flush();
// log + wait
mdr->committing = true;
- mdlog->submit_entry(le, new C_MDS_mknod_finish(mds, mdr, dn, newi, follows));
+ mdlog->submit_entry(le, new C_MDS_mknod_finish(mds, mdr, dn, newi, follows),
+ mdr->did_ino_allocation());
}
// log + wait
mdr->committing = true;
- mdlog->submit_entry(le, new C_MDS_mknod_finish(mds, mdr, dn, newi, follows));
+ mdlog->submit_entry(le, new C_MDS_mknod_finish(mds, mdr, dn, newi, follows),
+ mdr->did_ino_allocation());
}
// log + wait
mdr->committing = true;
- mdlog->submit_entry(le, new C_MDS_mknod_finish(mds, mdr, dn, newi, follows));
+ mdlog->submit_entry(le, new C_MDS_mknod_finish(mds, mdr, dn, newi, follows),
+ mdr->did_ino_allocation());
}
// log + wait
C_MDS_openc_finish *fin = new C_MDS_openc_finish(mds, mdr, dn, in, follows);
- mdlog->submit_entry(le, fin);
+ mdlog->submit_entry(le, fin, mdr->did_ino_allocation());
}