File gconf2-fdatasync.patch of Package gconf2
diff -ur *6.orig/backends/markup-tree.c GConf-3.2.6/backends/markup-tree.c
--- *6.orig/backends/markup-tree.c 2011-08-15 21:59:31.000000000 -0500
+++ GConf-3.2.6/backends/markup-tree.c 2015-01-02 16:04:16.479034791 -0600
@@ -4350,6 +4350,12 @@
return dir->is_dir_empty;
}
+static gboolean
+install_in_progress ()
+{
+ return (g_strcmp0 (getenv ("YAST_IS_RUNNING"), "instsys") == 0);
+}
+
static void
save_tree_with_locale (MarkupDir *dir,
gboolean save_as_subtree,
@@ -4398,7 +4404,8 @@
*/
if (dir->entries == NULL && (!save_as_subtree || dir->subdirs == NULL))
{
- fsync (new_fd);
+ if (!install_in_progress ())
+ fdatasync (new_fd);
close (new_fd);
new_fd = -1;
goto done_writing;
@@ -4479,7 +4486,7 @@
goto done_writing;
}
- if (fflush (f) != 0 || fsync (fileno (f)) < 0)
+ if (fflush (f) != 0 || (!install_in_progress () && fdatasync (fileno (f)) < 0))
{
gconf_log (GCL_WARNING,
_("Could not flush file '%s' to disk: %s"),
diff -ur *6.orig/backends/xml-dir.c GConf-3.2.6/backends/xml-dir.c
--- *6.orig/backends/xml-dir.c 2011-08-15 21:59:31.000000000 -0500
+++ GConf-3.2.6/backends/xml-dir.c 2015-01-02 16:04:16.480034791 -0600
@@ -383,7 +383,7 @@
#ifdef HAVE_FSYNC
/* sync kernel-space buffers to disk */
- if (fsync (fd) == -1)
+ if (g_strcmp0 (getenv ("YAST_IS_RUNNING"), "instsys") && fdatasync (fd) == -1)
return -1;
#endif
diff -ur *6.orig/gconf/gconfd.c GConf-3.2.6/gconf/gconfd.c
--- *6.orig/gconf/gconfd.c 2012-04-25 20:12:49.000000000 -0500
+++ GConf-3.2.6/gconf/gconfd.c 2015-01-02 16:04:16.481034791 -0600
@@ -1878,7 +1878,7 @@
goto out;
}
- if (fsync (fd) < 0)
+ if (g_strcmp0 (getenv ("YAST_IS_RUNNING"), "instsys") && fdatasync (fd) < 0)
{
gconf_log (GCL_WARNING,
_("Could not flush saved state file '%s' to disk: %s"),