diff options
author | Tomas Bzatek <tbzatek@redhat.com> | 2013-05-13 17:43:19 +0200 |
---|---|---|
committer | Tomas Bzatek <tbzatek@redhat.com> | 2013-05-14 18:01:17 +0200 |
commit | 755ed5e229f02429838af1b8b84a922ef3efd2f0 (patch) | |
tree | 68be99390e6ae831e2b7bc141479ae3b6cadc3ce | |
parent | 34db4bdf35935b153da26bf8d0654242a6c6da9c (diff) | |
download | gvfs-755ed5e229f02429838af1b8b84a922ef3efd2f0.tar.gz |
metadata: Use shorter writeout timeout on NFS
Since we've moved journal to a non-volatile storage, let's flush
more often to minimize a chance of data loss.
https://bugzilla.gnome.org/show_bug.cgi?id=637095
(cherry picked from commit c8e7d1375715545f28a0943ce7657330e3b70acd)
-rw-r--r-- | metadata/meta-daemon.c | 12 | ||||
-rw-r--r-- | metadata/metatree.c | 6 | ||||
-rw-r--r-- | metadata/metatree.h | 1 |
3 files changed, 16 insertions, 3 deletions
diff --git a/metadata/meta-daemon.c b/metadata/meta-daemon.c index ce34b735..f29e7f0b 100644 --- a/metadata/meta-daemon.c +++ b/metadata/meta-daemon.c @@ -32,6 +32,7 @@ #include "metadata-dbus.h" #define WRITEOUT_TIMEOUT_SECS 60 +#define WRITEOUT_TIMEOUT_SECS_NFS 15 typedef struct { char *filename; @@ -67,10 +68,15 @@ writeout_timeout (gpointer data) static void tree_info_schedule_writeout (TreeInfo *info) { + gboolean on_nfs; + if (info->writeout_timeout == 0) - info->writeout_timeout = - g_timeout_add_seconds (WRITEOUT_TIMEOUT_SECS, - writeout_timeout, info); + { + on_nfs = meta_tree_is_on_nfs (info->tree); + info->writeout_timeout = + g_timeout_add_seconds (on_nfs ? WRITEOUT_TIMEOUT_SECS_NFS : WRITEOUT_TIMEOUT_SECS, + writeout_timeout, info); + } } static TreeInfo * diff --git a/metadata/metatree.c b/metadata/metatree.c index 31ef8a61..6aef33c0 100644 --- a/metadata/metatree.c +++ b/metadata/metatree.c @@ -472,6 +472,12 @@ meta_tree_exists (MetaTree *tree) return tree->fd != -1; } +gboolean +meta_tree_is_on_nfs (MetaTree *tree) +{ + return tree->on_nfs; +} + static GHashTable *cached_trees = NULL; G_LOCK_DEFINE_STATIC (cached_trees); diff --git a/metadata/metatree.h b/metadata/metatree.h index 4bbb192c..f24b4e9b 100644 --- a/metadata/metatree.h +++ b/metadata/metatree.h @@ -66,6 +66,7 @@ void meta_tree_unref (MetaTree *tree); void meta_tree_refresh (MetaTree *tree); const char *meta_tree_get_filename (MetaTree *tree); gboolean meta_tree_exists (MetaTree *tree); +gboolean meta_tree_is_on_nfs (MetaTree *tree); MetaKeyType meta_tree_lookup_key_type (MetaTree *tree, const char *path, |