OPTION(journal_max_write_entries, 0, OPT_INT, 100),
OPTION(journal_queue_max_ops, 0, OPT_INT, 500),
OPTION(journal_queue_max_bytes, 0, OPT_INT, 100 << 20),
+ OPTION(journal_align_min_size, 0, OPT_INT, 64 << 10), // align data payloads >= this.
OPTION(bdev_lock, 0, OPT_BOOL, true),
OPTION(bdev_iothreads, 0, OPT_INT, 1), // number of ios to queue with kernel
OPTION(bdev_idle_kick_after_ms, 0, OPT_INT, 100), // ms
int journal_max_write_entries;
int journal_queue_max_ops;
int journal_queue_max_bytes;
+ int journal_align_min_size;
// block device
bool bdev_lock;
if (journal && journal->is_writeable()) {
bufferlist tbl;
t.encode(tbl);
- journal->submit_entry(op, tbl, t.get_data_alignment(), onjournal);
+
+ int alignment = -1;
+ if ((int)t.get_data_length() >= g_conf.journal_align_min_size)
+ alignment = t.get_data_alignment();
+
+ journal->submit_entry(op, tbl, alignment, onjournal);
} else if (onjournal)
commit_waiters[op].push_back(onjournal);
}
unsigned data_len = 0, data_align = 0;
for (list<ObjectStore::Transaction*>::iterator p = tls.begin(); p != tls.end(); p++) {
ObjectStore::Transaction *t = *p;
- if (t->get_data_length() > data_len) {
+ if (t->get_data_length() > data_len &&
+ (int)t->get_data_length() >= g_conf.journal_align_min_size) {
data_len = t->get_data_length();
data_align = (t->get_data_alignment() - tbl.length()) & ~PAGE_MASK;
}