From ad8a4ef24dee1b716179fd92af5a62d30680b0dd Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 21 Apr 2003 18:41:19 +0300 Subject: [PATCH] fsync() saved mails --HG-- branch : HEAD --- src/lib-storage/index/maildir/maildir-save.c | 12 +++++++++++- src/lib-storage/index/mbox/mbox-save.c | 5 +++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/lib-storage/index/maildir/maildir-save.c b/src/lib-storage/index/maildir/maildir-save.c index 7cdbb53e24..a9fcdf28ea 100644 --- a/src/lib-storage/index/maildir/maildir-save.c +++ b/src/lib-storage/index/maildir/maildir-save.c @@ -53,8 +53,18 @@ maildir_read_into_tmp(struct index_mailbox *ibox, const char *dir, fname = NULL; o_stream_unref(output); - if (close(fd) < 0) + /* FIXME: when saving multiple messages, we could get better + performance if we left the fd open and fsync()ed it later */ + if (fsync(fd) < 0) { + mail_storage_set_critical(ibox->box.storage, + "fsync() failed for %s: %m", path); fname = NULL; + } + if (close(fd) < 0) { + mail_storage_set_critical(ibox->box.storage, + "close() failed for %s: %m", path); + fname = NULL; + } if (fname == NULL) (void)unlink(path); diff --git a/src/lib-storage/index/mbox/mbox-save.c b/src/lib-storage/index/mbox/mbox-save.c index a7990e342d..f1a1494134 100644 --- a/src/lib-storage/index/mbox/mbox-save.c +++ b/src/lib-storage/index/mbox/mbox-save.c @@ -357,6 +357,11 @@ int mbox_storage_save_deinit(struct mail_save_context *ctx, int rollback) syscall_error(ctx, "ftruncate()"); failed = TRUE; } + } else { + if (fdatasync(ctx->ibox->index->mbox_fd) < 0) { + syscall_error(ctx, "fsync()"); + failed = TRUE; + } } i_free(ctx); -- 2.47.3