lok: add SAL_DISABLE_FSYNC environment to disable fsync.

For state-less containers there is no benefit in fsync'ing,
file data is safe when it is up-loaded back to storage - but
profiling shows latency from stray fsyncs.

Change-Id: I9f03d5866dec05e5507deb56b0dca93b6876225e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167490
Tested-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 90bd45d7a9)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172947
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Jenkins
This commit is contained in:
Michael Meeks 2024-05-10 17:47:19 +01:00
parent e4344d13de
commit c95b118982
3 changed files with 24 additions and 1 deletions

View file

@ -27,6 +27,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,nss,\
external/nss/nss-restore-manual-pre-dependencies.patch.1 \
external/nss/Wincompatible-function-pointer-types.patch.0 \
$(if $(filter LINUX,$(OS)), \
external/nss/nss.disablefsync.patch \
external/nss/nss.getrandom.patch) \
$(if $(filter iOS,$(OS)), \
external/nss/nss-ios.patch) \

18
external/nss/nss.disablefsync.patch vendored Normal file
View file

@ -0,0 +1,18 @@
--- a/nss/nss/lib/sqlite/sqlite3.c
+++ b/nss/nss/lib/sqlite/sqlite3.c
@@ -36136,6 +36136,15 @@
static int full_fsync(int fd, int fullSync, int dataOnly){
int rc;
+ static int disabledKnown = 0, disabled = 0;
+ if (!disabledKnown)
+ {
+ disabled = getenv("SAL_DISABLE_FSYNC") != NULL;
+ disabledKnown = 1;
+ }
+ if (disabled)
+ return 0;
+
/* The following "ifdef/elif/else/" block has the same structure as
** the one below. It is replicated here solely to avoid cluttering
** up the real code with the UNUSED_PARAMETER() macros.

View file

@ -1236,7 +1236,11 @@ oslFileError SAL_CALL osl_syncFile(oslFileHandle Handle)
if (result != osl_File_E_None)
return result;
if (fsync(pImpl->m_fd) == -1)
static bool disabled = getenv("SAL_DISABLE_FSYNC") != nullptr;
if (disabled)
SAL_INFO("sal.file", "fsync(" << pImpl->m_fd << "): Disabled");
else if (fsync(pImpl->m_fd) == -1)
{
int e = errno;
SAL_INFO("sal.file", "fsync(" << pImpl->m_fd << "): " << UnixErrnoString(e));