Mercurial > dovecot > original-hg > dovecot-1.2
diff src/lib-storage/index/maildir/maildir-sync.c @ 6881:b1554dea8ee8 HEAD
If we're doing a fast sync, try only once to lock uidlist.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 01 Dec 2007 09:48:19 +0200 |
parents | 724c8f12eed2 |
children | 15df8bb27d7a |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-sync.c Sat Dec 01 09:23:21 2007 +0200 +++ b/src/lib-storage/index/maildir/maildir-sync.c Sat Dec 01 09:48:19 2007 +0200 @@ -209,6 +209,7 @@ struct maildir_mailbox *mbox; const char *new_dir, *cur_dir; + enum mailbox_sync_flags flags; time_t last_touch, last_notify; struct maildir_uidlist_sync_ctx *uidlist_sync_ctx; @@ -246,7 +247,8 @@ } static struct maildir_sync_context * -maildir_sync_context_new(struct maildir_mailbox *mbox) +maildir_sync_context_new(struct maildir_mailbox *mbox, + enum mailbox_sync_flags flags) { struct maildir_sync_context *ctx; @@ -256,6 +258,7 @@ ctx->cur_dir = t_strconcat(mbox->path, "/cur", NULL); ctx->last_touch = ioloop_time; ctx->last_notify = ioloop_time; + ctx->flags = flags; return ctx; } @@ -764,6 +767,8 @@ } else { ctx->partial = FALSE; sync_flags = 0; + if ((ctx->flags & MAILBOX_SYNC_FLAG_FAST) != 0) + sync_flags |= MAILDIR_UIDLIST_SYNC_TRYLOCK; } ret = maildir_uidlist_sync_init(ctx->mbox->uidlist, sync_flags, &ctx->uidlist_sync_ctx); @@ -832,7 +837,7 @@ bool lost_files; int ret; - ctx = maildir_sync_context_new(mbox); + ctx = maildir_sync_context_new(mbox, 0); ret = maildir_sync_context(ctx, TRUE, &lost_files); maildir_sync_deinit(ctx); return ret; @@ -854,7 +859,7 @@ ioloop_time) { mbox->ibox.sync_last_check = ioloop_time; - ctx = maildir_sync_context_new(mbox); + ctx = maildir_sync_context_new(mbox, flags); ret = maildir_sync_context(ctx, FALSE, &lost_files); maildir_sync_deinit(ctx);