OPTION(journal_dio, OPT_BOOL, true)
OPTION(journal_aio, OPT_BOOL, true)
OPTION(journal_force_aio, OPT_BOOL, false)
+OPTION(journal_block_size, OPT_INT, 4096)
// max bytes to search ahead in journal searching for corruption
OPTION(journal_max_corrupt_search, OPT_U64, 10<<20)
#define dout_prefix *_dout << "journal "
const static int64_t ONE_MEG(1 << 20);
-const static int CEPH_MINIMUM_BLOCK_SIZE(4096);
+const static int CEPH_DIRECTIO_ALIGNMENT(4096);
+
int FileJournal::_open(bool forwrite, bool create)
{
<< dendl;
max_size = bdev_sz;
- block_size = CEPH_MINIMUM_BLOCK_SIZE;
+ block_size = g_conf->journal_block_size;
if (g_conf->journal_discard) {
discard = block_device_support_discard(fn.c_str());
else {
max_size = oldsize;
}
- block_size = MAX(blksize, (blksize_t)CEPH_MINIMUM_BLOCK_SIZE);
+ block_size = g_conf->journal_block_size;
if (create && g_conf->journal_zero_on_create) {
derr << "FileJournal::_open_file : zeroing journal" << dendl;
<< block_size << " (required for direct_io journal mode)" << dendl;
return -EINVAL;
}
- if ((header.alignment % CEPH_MINIMUM_BLOCK_SIZE) && directio) {
- dout(0) << "open journal alignment " << header.alignment << " is not multiple of minimum block size "
- << CEPH_MINIMUM_BLOCK_SIZE << " (required for direct_io journal mode)" << dendl;
+ if ((header.alignment % CEPH_DIRECTIO_ALIGNMENT) && directio) {
+ dout(0) << "open journal alignment " << header.alignment
+ << " is not multiple of minimum directio alignment "
+ << CEPH_DIRECTIO_ALIGNMENT << " (required for direct_io journal mode)"
+ << dendl;
return -EINVAL;
}
{
// make sure list segments are page aligned
if (directio && (!bl.is_aligned(block_size) ||
- !bl.is_n_align_sized(CEPH_MINIMUM_BLOCK_SIZE))) {
+ !bl.is_n_align_sized(CEPH_DIRECTIO_ALIGNMENT))) {
assert(0 == "bl should be align");
- if ((bl.length() & (CEPH_MINIMUM_BLOCK_SIZE - 1)) != 0 ||
- (pos & (CEPH_MINIMUM_BLOCK_SIZE - 1)) != 0)
+ if ((bl.length() & (CEPH_DIRECTIO_ALIGNMENT - 1)) != 0 ||
+ (pos & (CEPH_DIRECTIO_ALIGNMENT - 1)) != 0)
dout(0) << "rebuild_page_aligned failed, " << bl << dendl;
- assert((bl.length() & (CEPH_MINIMUM_BLOCK_SIZE - 1)) == 0);
- assert((pos & (CEPH_MINIMUM_BLOCK_SIZE - 1)) == 0);
+ assert((bl.length() & (CEPH_DIRECTIO_ALIGNMENT - 1)) == 0);
+ assert((pos & (CEPH_DIRECTIO_ALIGNMENT - 1)) == 0);
}
}
}
// footer
ebl.append((const char*)&h, sizeof(h));
- ebl.rebuild_aligned(CEPH_MINIMUM_BLOCK_SIZE);
+ ebl.rebuild_aligned(CEPH_DIRECTIO_ALIGNMENT);
tbl->claim(ebl);
return h.len;
}