[PATCH v3 15/20] insert: fsync parent directory after mkdir
Peter Wang
novalazy at gmail.com
Sat Jan 19 16:49:59 PST 2013
After creating a subdirectory, fsync on its parent directory for
durability.
---
notmuch-insert.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/notmuch-insert.c b/notmuch-insert.c
index c4d5e75..8012eb4 100644
--- a/notmuch-insert.c
+++ b/notmuch-insert.c
@@ -82,9 +82,21 @@ sync_dir (const char *dir)
static notmuch_bool_t
make_directory (char *path, int mode)
{
+ notmuch_bool_t ret;
+ char *slash;
+
if (mkdir (path, mode) != 0)
return (errno == EEXIST);
- return TRUE;
+
+ /* Sync the parent directory for durability. */
+ ret = TRUE;
+ slash = strrchr (path, '/');
+ if (slash) {
+ *slash = '\0';
+ ret = sync_dir (path);
+ *slash = '/';
+ }
+ return ret;
}
/* Make the given directory including its parent directories as necessary.
--
1.7.12.1
More information about the notmuch
mailing list