diff --git a/include/ircd/m/media.h b/include/ircd/m/media.h index a8a22d4dd..9ca7db1b2 100644 --- a/include/ircd/m/media.h +++ b/include/ircd/m/media.h @@ -18,6 +18,7 @@ namespace ircd::m::media extern log::log log; extern conf::item events_prefetch; extern conf::item download_timeout; + extern conf::item journal_threshold; extern std::set downloading; extern ctx::dock downloading_dock; } diff --git a/matrix/media.cc b/matrix/media.cc index fb1d54131..9db01c3bc 100644 --- a/matrix/media.cc +++ b/matrix/media.cc @@ -21,6 +21,13 @@ ircd::m::media::events_prefetch { "default", 16L }, }; +decltype(ircd::m::media::journal_threshold) +ircd::m::media::journal_threshold +{ + { "name", "ircd.m.media.journal.threshold" }, + { "default", 0L }, +}; + decltype(ircd::m::media::downloading) ircd::m::media::downloading; @@ -112,6 +119,11 @@ try }; m::vm::copts vmopts; + + // Disable the WAL for file rooms + if(size(content) >= size_t(journal_threshold)) + vmopts.wopts.sopts.journal = false; + const m::room room { room_id, &vmopts