mirror of
https://github.com/ceph/ceph
synced 2024-12-17 08:57:28 +00:00
librbd: new configuration option to restrict journal payload size
Ensure that, by default, IO journal events are broken up into manageable sizes when factoring in that an rbd-mirror daemon might be replaying events from thousands of images. Signed-off-by: Jason Dillaman <dillaman@redhat.com>
This commit is contained in:
parent
47e0fbf231
commit
11d7500b9b
@ -1248,6 +1248,7 @@ OPTION(rbd_journal_object_flush_interval, OPT_INT, 0) // maximum number of pendi
|
||||
OPTION(rbd_journal_object_flush_bytes, OPT_INT, 0) // maximum number of pending bytes per journal object
|
||||
OPTION(rbd_journal_object_flush_age, OPT_DOUBLE, 0) // maximum age (in seconds) for pending commits
|
||||
OPTION(rbd_journal_pool, OPT_STR, "") // pool for journal objects
|
||||
OPTION(rbd_journal_max_payload_bytes, OPT_U32, 16384) // maximum journal payload size before splitting
|
||||
|
||||
/**
|
||||
* RBD Mirror options
|
||||
|
@ -928,7 +928,8 @@ struct C_InvalidateCache : public Context {
|
||||
"rbd_journal_object_flush_interval", false)(
|
||||
"rbd_journal_object_flush_bytes", false)(
|
||||
"rbd_journal_object_flush_age", false)(
|
||||
"rbd_journal_pool", false);
|
||||
"rbd_journal_pool", false)(
|
||||
"rbd_journal_max_payload_bytes", false);
|
||||
|
||||
md_config_t local_config_t;
|
||||
std::map<std::string, bufferlist> res;
|
||||
@ -983,6 +984,7 @@ struct C_InvalidateCache : public Context {
|
||||
ASSIGN_OPTION(journal_object_flush_bytes);
|
||||
ASSIGN_OPTION(journal_object_flush_age);
|
||||
ASSIGN_OPTION(journal_pool);
|
||||
ASSIGN_OPTION(journal_max_payload_bytes);
|
||||
}
|
||||
|
||||
ExclusiveLock<ImageCtx> *ImageCtx::create_exclusive_lock() {
|
||||
|
@ -182,6 +182,7 @@ namespace librbd {
|
||||
uint64_t journal_object_flush_bytes;
|
||||
double journal_object_flush_age;
|
||||
std::string journal_pool;
|
||||
uint32_t journal_max_payload_bytes;
|
||||
|
||||
LibrbdAdminSocketHook *asok_hook;
|
||||
|
||||
|
@ -1191,6 +1191,7 @@ void Journal<I>::create_journaler() {
|
||||
transition_state(STATE_INITIALIZING, 0);
|
||||
::journal::Settings settings;
|
||||
settings.commit_interval = m_image_ctx.journal_commit_age;
|
||||
settings.max_payload_bytes = m_image_ctx.journal_max_payload_bytes;
|
||||
|
||||
m_journaler = new Journaler(m_work_queue, m_timer, m_timer_lock,
|
||||
m_image_ctx.md_ctx, m_image_ctx.id,
|
||||
|
@ -86,7 +86,8 @@ struct MockImageCtx {
|
||||
journal_object_flush_interval(image_ctx.journal_object_flush_interval),
|
||||
journal_object_flush_bytes(image_ctx.journal_object_flush_bytes),
|
||||
journal_object_flush_age(image_ctx.journal_object_flush_age),
|
||||
journal_pool(image_ctx.journal_pool)
|
||||
journal_pool(image_ctx.journal_pool),
|
||||
journal_max_payload_bytes(image_ctx.journal_max_payload_bytes)
|
||||
{
|
||||
md_ctx.dup(image_ctx.md_ctx);
|
||||
data_ctx.dup(image_ctx.data_ctx);
|
||||
@ -240,6 +241,7 @@ struct MockImageCtx {
|
||||
uint64_t journal_object_flush_bytes;
|
||||
double journal_object_flush_age;
|
||||
std::string journal_pool;
|
||||
uint32_t journal_max_payload_bytes;
|
||||
};
|
||||
|
||||
} // namespace librbd
|
||||
|
Loading…
Reference in New Issue
Block a user