From 75ad0ac9540a883693a804fa9f2b869d5d2f0d3b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Fri, 12 Jul 2013 09:16:42 +0200 Subject: [PATCH] - rel 2; always fsync by default - safety first and KDE doesn't care about safety of your files (including config files) --- kde4-kdelibs-sync.patch | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 kde4-kdelibs-sync.patch diff --git a/kde4-kdelibs-sync.patch b/kde4-kdelibs-sync.patch new file mode 100644 index 0000000..71d02ba --- /dev/null +++ b/kde4-kdelibs-sync.patch @@ -0,0 +1,68 @@ +diff -ruN kdelibs-4.10.5.org/kde3support/kdecore/k3tempfile.cpp kdelibs-4.10.5/kde3support/kdecore/k3tempfile.cpp +--- kdelibs-4.10.5.org/kde3support/kdecore/k3tempfile.cpp 2013-06-28 19:03:40.834334863 +0200 ++++ kdelibs-4.10.5/kde3support/kdecore/k3tempfile.cpp 2013-07-12 08:30:01.608605762 +0200 +@@ -258,7 +258,7 @@ + + if (mFd >= 0) + { +- if( qgetenv( "KDE_EXTRA_FSYNC" ) == "1" ) ++ if( !(qgetenv( "KDE_EXTRA_FSYNC" ) == "0") ) + { + result = FDATASYNC(mFd); + if (result) +diff -ruN kdelibs-4.10.5.org/kdecore/config/kconfigini.cpp kdelibs-4.10.5/kdecore/config/kconfigini.cpp +--- kdelibs-4.10.5.org/kdecore/config/kconfigini.cpp 2013-06-28 19:03:40.859337527 +0200 ++++ kdelibs-4.10.5/kdecore/config/kconfigini.cpp 2013-07-12 08:27:38.527009696 +0200 +@@ -37,6 +37,14 @@ + #include + #include + #include ++#include ++#include ++ ++#ifdef HAVE_FDATASYNC ++# define FDATASYNC fdatasync ++#else ++# define FDATASYNC fsync ++#endif + + extern bool kde_kiosk_exception; + +@@ -441,7 +449,12 @@ + file.setTextModeEnabled(true); // to get eol translation + writeEntries(locale, file, writeMap); + +- if (!file.flush()) { ++ if (file.flush()) { ++ forever { ++ if (!FDATASYNC(file.handle())) ++ break; ++ } ++ } else { + // Couldn't write. Disk full? + kWarning() << "Couldn't write" << filePath() << ". Disk full?"; + file.abort(); +diff -ruN kdelibs-4.10.5.org/kdecore/io/ksavefile.cpp kdelibs-4.10.5/kdecore/io/ksavefile.cpp +--- kdelibs-4.10.5.org/kdecore/io/ksavefile.cpp 2013-06-28 19:03:40.874339125 +0200 ++++ kdelibs-4.10.5/kdecore/io/ksavefile.cpp 2013-07-12 08:33:57.773404699 +0200 +@@ -38,6 +38,7 @@ + #include + + #include ++#include + #include + + class KSaveFile::Private +@@ -225,8 +226,10 @@ + bool success = false; + #ifdef Q_OS_UNIX + static int extraSync = -1; +- if (extraSync < 0) +- extraSync = getenv("KDE_EXTRA_FSYNC") != 0 ? 1 : 0; ++ if (extraSync < 0) { ++ char *kef = getenv("KDE_EXTRA_FSYNC"); ++ extraSync = (kef && strncmp(kef, "0", 1) == 0) ? 0 : 1; ++ } + if (extraSync) { + if (flush()) { + forever { -- 2.44.0