From: Martti Rannanjärvi Date: Wed, 20 Sep 2017 11:42:00 +0000 (+0300) Subject: lib-storage: Add reason to mailbox_transaction_begin() X-Git-Tag: 2.3.0.rc1~965 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0dab9cb35a976c49b28a11e28d5570f5191f1a7a;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Add reason to mailbox_transaction_begin() Remove mailbox_transaction_set_reason(). --- diff --git a/src/doveadm/doveadm-mail-copymove.c b/src/doveadm/doveadm-mail-copymove.c index 8e5b700912..6448f2794a 100644 --- a/src/doveadm/doveadm-mail-copymove.c +++ b/src/doveadm/doveadm-mail-copymove.c @@ -39,7 +39,8 @@ cmd_copy_box(struct copy_cmd_context *ctx, struct mailbox *destbox, this guarantees that mails aren't expunged without actually having been copied. */ desttrans = mailbox_transaction_begin(destbox, - MAILBOX_TRANSACTION_FLAG_EXTERNAL); + MAILBOX_TRANSACTION_FLAG_EXTERNAL, + __func__); while (doveadm_mail_iter_next(iter, &mail)) { save_ctx = mailbox_save_alloc(desttrans); diff --git a/src/doveadm/doveadm-mail-deduplicate.c b/src/doveadm/doveadm-mail-deduplicate.c index cf96cb6fbd..13a43a8a2f 100644 --- a/src/doveadm/doveadm-mail-deduplicate.c +++ b/src/doveadm/doveadm-mail-deduplicate.c @@ -42,7 +42,7 @@ static int cmd_deduplicate_uidlist(struct doveadm_mail_cmd_context *_ctx, arg = mail_search_build_add(search_args, SEARCH_UIDSET); arg->value.seqset = uids; - trans = mailbox_transaction_begin(box, 0); + trans = mailbox_transaction_begin(box, 0, __func__); search_ctx = mailbox_search_init(trans, search_args, NULL, 0, NULL); mail_search_args_unref(&search_args); diff --git a/src/doveadm/doveadm-mail-import.c b/src/doveadm/doveadm-mail-import.c index 494723a34e..a9005ea195 100644 --- a/src/doveadm/doveadm-mail-import.c +++ b/src/doveadm/doveadm-mail-import.c @@ -100,7 +100,8 @@ cmd_import_box_contents(struct doveadm_mail_iter *iter, struct mail *src_mail, int ret = 0; dest_trans = mailbox_transaction_begin(dest_box, - MAILBOX_TRANSACTION_FLAG_EXTERNAL); + MAILBOX_TRANSACTION_FLAG_EXTERNAL, + __func__); do { if (doveadm_debug) { i_debug("import: box=%s uid=%u", diff --git a/src/doveadm/doveadm-mail-index.c b/src/doveadm/doveadm-mail-index.c index f232d5e1ea..b6d9533bfa 100644 --- a/src/doveadm/doveadm-mail-index.c +++ b/src/doveadm/doveadm-mail-index.c @@ -65,7 +65,8 @@ static int cmd_index_box_precache(struct mailbox *box) mailbox_get_vname(box), seq, status.messages); } - trans = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_NO_CACHE_DEC); + trans = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_NO_CACHE_DEC, + __func__); search_args = mail_search_build_init(); mail_search_build_add_seqset(search_args, seq, status.messages); ctx = mailbox_search_init(trans, search_args, NULL, diff --git a/src/doveadm/doveadm-mail-iter.c b/src/doveadm/doveadm-mail-iter.c index a348c285c0..78242056b2 100644 --- a/src/doveadm/doveadm-mail-iter.c +++ b/src/doveadm/doveadm-mail-iter.c @@ -58,7 +58,7 @@ int doveadm_mail_iter_init(struct doveadm_mail_cmd_context *ctx, NULL : mailbox_header_lookup_init(iter->box, wanted_headers); mail_search_args_init(search_args, iter->box, FALSE, NULL); - iter->t = mailbox_transaction_begin(iter->box, 0); + iter->t = mailbox_transaction_begin(iter->box, 0, __func__); iter->search_ctx = mailbox_search_init(iter->t, search_args, NULL, wanted_fields, headers_ctx); *iter_r = iter; diff --git a/src/doveadm/doveadm-mail-mailbox-metadata.c b/src/doveadm/doveadm-mail-mailbox-metadata.c index 21db77e1dc..a365c5fbb6 100644 --- a/src/doveadm/doveadm-mail-mailbox-metadata.c +++ b/src/doveadm/doveadm-mail-mailbox-metadata.c @@ -75,7 +75,8 @@ cmd_mailbox_metadata_set_run(struct doveadm_mail_cmd_context *_ctx, return ret; trans = mailbox_transaction_begin(box, ctx->empty_mailbox_name ? - MAILBOX_TRANSACTION_FLAG_EXTERNAL : 0); + MAILBOX_TRANSACTION_FLAG_EXTERNAL : 0, + __func__); ret = ctx->value.value == NULL ? mailbox_attribute_unset(trans, ctx->key_type, ctx->key) : diff --git a/src/doveadm/doveadm-mail-save.c b/src/doveadm/doveadm-mail-save.c index 3481f619a2..2c75004156 100644 --- a/src/doveadm/doveadm-mail-save.c +++ b/src/doveadm/doveadm-mail-save.c @@ -36,7 +36,8 @@ cmd_save_to_mailbox(struct save_cmd_context *ctx, struct mailbox *box, return -1; } - trans = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_EXTERNAL); + trans = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_EXTERNAL, + __func__); save_ctx = mailbox_save_alloc(trans); if (mailbox_save_begin(&save_ctx, input) < 0) { i_error("Saving failed: %s", diff --git a/src/doveadm/dsync/dsync-mailbox-export.c b/src/doveadm/dsync/dsync-mailbox-export.c index cb02deba3d..9eed9dcd37 100644 --- a/src/doveadm/dsync/dsync-mailbox-export.c +++ b/src/doveadm/dsync/dsync-mailbox-export.c @@ -400,7 +400,8 @@ dsync_mailbox_export_search(struct dsync_mailbox_exporter *exporter) } exporter->trans = mailbox_transaction_begin(exporter->box, - MAILBOX_TRANSACTION_FLAG_SYNC); + MAILBOX_TRANSACTION_FLAG_SYNC, + __func__); search_ctx = mailbox_search_init(exporter->trans, search_args, NULL, wanted_fields, wanted_headers); mail_search_args_unref(&search_args); diff --git a/src/doveadm/dsync/dsync-mailbox-import.c b/src/doveadm/dsync/dsync-mailbox-import.c index b4272927e0..1cfdda18c7 100644 --- a/src/doveadm/dsync/dsync-mailbox-import.c +++ b/src/doveadm/dsync/dsync-mailbox-import.c @@ -203,9 +203,11 @@ dsync_mailbox_import_transaction_begin(struct dsync_mailbox_importer *importer) MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS; importer->trans = mailbox_transaction_begin(importer->box, - importer->transaction_flags); + importer->transaction_flags, + "dsync import"); importer->ext_trans = mailbox_transaction_begin(importer->box, - ext_trans_flags); + ext_trans_flags, + "dsync ext import"); importer->mail = mail_alloc(importer->trans, 0, NULL); importer->ext_mail = mail_alloc(importer->ext_trans, 0, NULL); } @@ -2188,7 +2190,8 @@ dsync_mailbox_import_find_virtual_uids(struct dsync_mailbox_importer *importer) importer->virtual_trans = mailbox_transaction_begin(importer->virtual_all_box, - importer->transaction_flags); + importer->transaction_flags, + __func__); search_ctx = mailbox_search_init(importer->virtual_trans, search_args, NULL, MAIL_FETCH_GUID, NULL); mail_search_args_unref(&search_args); @@ -2612,7 +2615,7 @@ reassign_uids_in_seq_range(struct dsync_mailbox_importer *importer, array_count(unwanted_uids)); array_append_array(&arg->value.seqset, unwanted_uids); - trans = mailbox_transaction_begin(box, trans_flags); + trans = mailbox_transaction_begin(box, trans_flags, __func__); search_ctx = mailbox_search_init(trans, search_args, NULL, 0, NULL); mail_search_args_unref(&search_args); diff --git a/src/imap/cmd-append.c b/src/imap/cmd-append.c index f55d43bdd7..93777285b6 100644 --- a/src/imap/cmd-append.c +++ b/src/imap/cmd-append.c @@ -926,8 +926,8 @@ bool cmd_append(struct client_command_context *cmd) else { ctx->t = mailbox_transaction_begin(ctx->box, MAILBOX_TRANSACTION_FLAG_EXTERNAL | - MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS); - imap_transaction_set_cmd_reason(ctx->t, cmd); + MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS, + imap_client_command_get_reason(cmd)); } io_remove(&client->io); diff --git a/src/imap/cmd-copy.c b/src/imap/cmd-copy.c index b4b71b1a49..708bf76448 100644 --- a/src/imap/cmd-copy.c +++ b/src/imap/cmd-copy.c @@ -48,8 +48,8 @@ static int fetch_and_copy(struct client_command_context *cmd, bool move, src_uidset = t_str_new(256); msgset_generator_init(&srcset_ctx, src_uidset); - src_trans = mailbox_transaction_begin(client->mailbox, 0); - imap_transaction_set_cmd_reason(src_trans, cmd); + src_trans = mailbox_transaction_begin(client->mailbox, 0, + imap_client_command_get_reason(cmd)); search_ctx = mailbox_search_init(src_trans, search_args, NULL, 0, NULL); ret = 1; @@ -134,8 +134,8 @@ static bool cmd_copy_full(struct client_command_context *cmd, bool move) t = mailbox_transaction_begin(destbox, MAILBOX_TRANSACTION_FLAG_EXTERNAL | - MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS); - imap_transaction_set_cmd_reason(t, cmd); + MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS, + imap_client_command_get_reason(cmd)); ret = fetch_and_copy(cmd, move, t, &src_trans, search_args, &src_uidset, ©_count); mail_search_args_unref(&search_args); diff --git a/src/imap/cmd-store.c b/src/imap/cmd-store.c index 41c08cc785..80e1739821 100644 --- a/src/imap/cmd-store.c +++ b/src/imap/cmd-store.c @@ -177,8 +177,9 @@ bool cmd_store(struct client_command_context *cmd) flags |= MAILBOX_TRANSACTION_FLAG_REFRESH; } - t = mailbox_transaction_begin(client->mailbox, flags); - imap_transaction_set_cmd_reason(t, cmd); + t = mailbox_transaction_begin(client->mailbox, flags, + imap_client_command_get_reason(cmd)); + search_ctx = mailbox_search_init(t, search_args, NULL, MAIL_FETCH_FLAGS, NULL); mail_search_args_unref(&search_args); diff --git a/src/imap/cmd-thread.c b/src/imap/cmd-thread.c index 6a07ba5963..e734d1b3e7 100644 --- a/src/imap/cmd-thread.c +++ b/src/imap/cmd-thread.c @@ -186,8 +186,8 @@ static int imap_thread_orderedsubject(struct client_command_context *cmd, /* first read all of the threads into memory */ pool = pool_alloconly_create("orderedsubject thread", 1024); i_array_init(&threads, 128); - trans = mailbox_transaction_begin(cmd->client->mailbox, 0); - imap_transaction_set_cmd_reason(trans, cmd); + trans = mailbox_transaction_begin(cmd->client->mailbox, 0, + imap_client_command_get_reason(cmd)); search_ctx = mailbox_search_init(trans, search_args, sort_program, 0, NULL); while (mailbox_search_next(search_ctx, &mail)) { diff --git a/src/imap/imap-commands-util.c b/src/imap/imap-commands-util.c index c9eaf988e0..e4d07b0e92 100644 --- a/src/imap/imap-commands-util.c +++ b/src/imap/imap-commands-util.c @@ -138,12 +138,6 @@ const char *imap_client_command_get_reason(struct client_command_context *cmd) t_strdup_printf("%s %s", cmd->name, cmd->human_args); } -void imap_transaction_set_cmd_reason(struct mailbox_transaction_context *trans, - struct client_command_context *cmd) -{ - mailbox_transaction_set_reason(trans, imap_client_command_get_reason(cmd)); -} - const char * imap_get_error_string(struct client_command_context *cmd, const char *error_string, enum mail_error error) diff --git a/src/imap/imap-expunge.c b/src/imap/imap-expunge.c index 40d6c96665..6003465de9 100644 --- a/src/imap/imap-expunge.c +++ b/src/imap/imap-expunge.c @@ -27,8 +27,8 @@ int imap_expunge(struct mailbox *box, struct mail_search_arg *next_search_arg, /* Refresh the flags so we'll expunge all messages marked as \Deleted by any session. */ - t = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_REFRESH); - mailbox_transaction_set_reason(t, "EXPUNGE"); + t = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_REFRESH, + "EXPUNGE"); ctx = mailbox_search_init(t, search_args, NULL, 0, NULL); mail_search_args_unref(&search_args); diff --git a/src/imap/imap-fetch.c b/src/imap/imap-fetch.c index 8bd2dac7cc..df870cd1ff 100644 --- a/src/imap/imap-fetch.c +++ b/src/imap/imap-fetch.c @@ -246,8 +246,7 @@ get_expunges_fallback(struct mailbox *box, i_array_init(&search_args->args->value.seqset, count); array_append_array(&search_args->args->value.seqset, uid_filter_arr); - trans = mailbox_transaction_begin(box, 0); - mailbox_transaction_set_reason(trans, "FETCH send VANISHED"); + trans = mailbox_transaction_begin(box, 0, "FETCH send VANISHED"); search_ctx = mailbox_search_init(trans, search_args, NULL, 0, NULL); mail_search_args_unref(&search_args); @@ -398,8 +397,8 @@ void imap_fetch_begin(struct imap_fetch_context *ctx, struct mailbox *box, are added, other flag changes are also hidden.) */ trans_flags |= MAILBOX_TRANSACTION_FLAG_HIDE; } - ctx->state.trans = mailbox_transaction_begin(box, trans_flags); - mailbox_transaction_set_reason(ctx->state.trans, ctx->reason); + ctx->state.trans = mailbox_transaction_begin(box, trans_flags, + ctx->reason); mail_search_args_init(search_args, box, TRUE, &ctx->client->search_saved_uidset); diff --git a/src/imap/imap-search.c b/src/imap/imap-search.c index 0b608b844f..7885b13777 100644 --- a/src/imap/imap-search.c +++ b/src/imap/imap-search.c @@ -580,8 +580,8 @@ bool imap_search_start(struct imap_search_context *ctx, } ctx->box = cmd->client->mailbox; - ctx->trans = mailbox_transaction_begin(ctx->box, 0); - imap_transaction_set_cmd_reason(ctx->trans, cmd); + ctx->trans = mailbox_transaction_begin(ctx->box, 0, + imap_client_command_get_reason(cmd)); ctx->sargs = sargs; ctx->search_ctx = mailbox_search_init(ctx->trans, sargs, sort_program, 0, NULL); diff --git a/src/imap/imap-state.c b/src/imap/imap-state.c index 50ee3b5439..db687a8c7e 100644 --- a/src/imap/imap-state.c +++ b/src/imap/imap-state.c @@ -173,8 +173,8 @@ imap_state_export_mailbox_mails(buffer_t *dest, struct mailbox *box, search_args = mail_search_build_init(); mail_search_build_add_all(search_args); - trans = mailbox_transaction_begin(box, 0); - mailbox_transaction_set_reason(trans, "unhibernate"); + trans = mailbox_transaction_begin(box, 0, + "unhibernate imap_state_export_mailbox_mails"); search_ctx = mailbox_search_init(trans, search_args, NULL, 0, NULL); mail_search_args_unref(&search_args); @@ -371,8 +371,8 @@ import_send_expunges(struct client *client, search_args = mail_search_build_init(); mail_search_build_add_all(search_args); - trans = mailbox_transaction_begin(client->mailbox, 0); - mailbox_transaction_set_reason(trans, "unhibernate"); + trans = mailbox_transaction_begin(client->mailbox, 0, + "unhibernate import_send_expunges"); search_ctx = mailbox_search_init(trans, search_args, NULL, 0, NULL); mail_search_args_unref(&search_args); diff --git a/src/imap/imap-sync.c b/src/imap/imap-sync.c index fda6266f9b..d345ddf44b 100644 --- a/src/imap/imap-sync.c +++ b/src/imap/imap-sync.c @@ -190,8 +190,7 @@ imap_sync_init(struct client *client, struct mailbox *box, mail_user_drop_useless_namespaces(client->user); ctx->sync_ctx = mailbox_sync_init(box, flags); - ctx->t = mailbox_transaction_begin(box, 0); - mailbox_transaction_set_reason(ctx->t, "Mailbox sync"); + ctx->t = mailbox_transaction_begin(box, 0, "Mailbox sync"); ctx->mail = mail_alloc(ctx->t, MAIL_FETCH_FLAGS, NULL); ctx->messages_count = client->messages_count; i_array_init(&ctx->tmp_keywords, client->keywords.announce_count + 8); diff --git a/src/indexer/master-connection.c b/src/indexer/master-connection.c index bee47448db..4387964b3c 100644 --- a/src/indexer/master-connection.c +++ b/src/indexer/master-connection.c @@ -83,8 +83,8 @@ index_mailbox_precache(struct master_connection *conn, struct mailbox *box) } seq = status.last_cached_seq + 1; - trans = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_NO_CACHE_DEC); - mailbox_transaction_set_reason(trans, "indexing"); + trans = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_NO_CACHE_DEC, + "indexing"); search_args = mail_search_build_init(); mail_search_build_add_seqset(search_args, seq, status.messages); ctx = mailbox_search_init(trans, search_args, NULL, diff --git a/src/lda/main.c b/src/lda/main.c index 7bbe3c9ed6..6b0b3232e9 100644 --- a/src/lda/main.c +++ b/src/lda/main.c @@ -200,7 +200,7 @@ lda_raw_mail_open(struct mail_deliver_context *ctx, const char *path) } mail_user_unref(&raw_mail_user); - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); headers_ctx = mailbox_header_lookup_init(box, wanted_headers); mail = mail_alloc(t, 0, headers_ctx); mailbox_header_lookup_unref(&headers_ctx); diff --git a/src/lib-imap-storage/imap-metadata.c b/src/lib-imap-storage/imap-metadata.c index eac482f061..cd2faa9bbb 100644 --- a/src/lib-imap-storage/imap-metadata.c +++ b/src/lib-imap-storage/imap-metadata.c @@ -121,7 +121,8 @@ imap_metadata_get_mailbox_transaction(struct imap_metadata_transaction *imtrans) if (imtrans->box == NULL || mailbox_open(imtrans->box) < 0) return -1; - imtrans->trans = mailbox_transaction_begin(imtrans->box, MAILBOX_TRANSACTION_FLAG_EXTERNAL); + imtrans->trans = mailbox_transaction_begin(imtrans->box, + MAILBOX_TRANSACTION_FLAG_EXTERNAL, __func__); return 0; } diff --git a/src/lib-imap-storage/imap-msgpart-url.c b/src/lib-imap-storage/imap-msgpart-url.c index a8dd6155fe..9b7fcd4aff 100644 --- a/src/lib-imap-storage/imap-msgpart-url.c +++ b/src/lib-imap-storage/imap-msgpart-url.c @@ -176,7 +176,7 @@ int imap_msgpart_url_open_mail(struct imap_msgpart_url *mpurl, return ret; /* start transaction */ - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); mail = mail_alloc(t, MAIL_FETCH_MESSAGE_PARTS | MAIL_FETCH_IMAP_BODYSTRUCTURE, NULL); diff --git a/src/lib-imap-urlauth/imap-urlauth-backend.c b/src/lib-imap-urlauth/imap-urlauth-backend.c index 9eda3355bb..bd2d0ede96 100644 --- a/src/lib-imap-urlauth/imap-urlauth-backend.c +++ b/src/lib-imap-urlauth/imap-urlauth-backend.c @@ -28,7 +28,9 @@ imap_urlauth_backend_trans_set_mailbox_key(struct mailbox *box, } struct mailbox_transaction_context *t = - mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_EXTERNAL); + mailbox_transaction_begin(box, + MAILBOX_TRANSACTION_FLAG_EXTERNAL, + __func__); /* create new key */ random_fill(mailbox_key_r, IMAP_URLAUTH_KEY_LEN); @@ -120,7 +122,8 @@ int imap_urlauth_backend_reset_mailbox_key(struct mailbox *box) struct mailbox_transaction_context *t; int ret; - t = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_EXTERNAL); + t = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_EXTERNAL, + __func__); ret = mailbox_attribute_unset(t, MAIL_ATTRIBUTE_TYPE_PRIVATE, IMAP_URLAUTH_KEY); if (mailbox_transaction_commit(&t) < 0) diff --git a/src/lib-lda/mail-deliver.c b/src/lib-lda/mail-deliver.c index 820bd58d0d..9eb23e0d19 100644 --- a/src/lib-lda/mail-deliver.c +++ b/src/lib-lda/mail-deliver.c @@ -324,7 +324,7 @@ mail_deliver_open_mail(struct mailbox *box, uint32_t uid, if (mailbox_sync(box, MAILBOX_SYNC_FLAG_FAST) < 0) return NULL; - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); mail = mail_alloc(t, wanted_fields, NULL); if (!mail_set_uid(mail, uid)) { @@ -380,7 +380,7 @@ int mail_deliver_save(struct mail_deliver_context *ctx, const char *mailbox, trans_flags = MAILBOX_TRANSACTION_FLAG_EXTERNAL; if (ctx->save_dest_mail) trans_flags |= MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS; - t = mailbox_transaction_begin(box, trans_flags); + t = mailbox_transaction_begin(box, trans_flags, __func__); kw = str_array_length(keywords) == 0 ? NULL : mailbox_keywords_create_valid(box, keywords); diff --git a/src/lib-storage/index/index-mailbox-size.c b/src/lib-storage/index/index-mailbox-size.c index 8bf00e7390..37f03da6d3 100644 --- a/src/lib-storage/index/index-mailbox-size.c +++ b/src/lib-storage/index/index-mailbox-size.c @@ -294,8 +294,7 @@ index_mailbox_vsize_hdr_add_missing(struct mailbox_vsize_update *update, } mail_search_build_add_seqset(search_args, seq1, seq2); - trans = mailbox_transaction_begin(update->box, 0); - mailbox_transaction_set_reason(trans, "vsize update"); + trans = mailbox_transaction_begin(update->box, 0, "vsize update"); search_ctx = mailbox_search_init(trans, search_args, NULL, MAIL_FETCH_VIRTUAL_SIZE, NULL); if (!require_result) @@ -407,8 +406,7 @@ int index_mailbox_get_physical_size(struct mailbox *box, if (mailbox_sync(box, MAILBOX_SYNC_FLAG_FULL_READ) < 0) return -1; - trans = mailbox_transaction_begin(box, 0); - mailbox_transaction_set_reason(trans, "mailbox physical size"); + trans = mailbox_transaction_begin(box, 0, "mailbox physical size"); search_args = mail_search_build_init(); mail_search_build_add_all(search_args); diff --git a/src/lib-storage/index/index-search-result.c b/src/lib-storage/index/index-search-result.c index 8b2ab1123c..a54cd1956d 100644 --- a/src/lib-storage/index/index-search-result.c +++ b/src/lib-storage/index/index-search-result.c @@ -68,7 +68,7 @@ search_result_update_search(struct mail_search_result *result, mail_search_args_init(result->search_args, result->box, FALSE, NULL); - t = mailbox_transaction_begin(result->box, 0); + t = mailbox_transaction_begin(result->box, 0, __func__); search_ctx = mailbox_search_init(t, result->search_args, NULL, 0, NULL); /* tell search that we're updating an existing search result, so it can do some optimizations based on it */ @@ -161,7 +161,7 @@ int index_search_result_update_appends(struct mail_search_result *result, result->search_args->args = &search_arg; /* add all messages matching the search to search result */ - t = mailbox_transaction_begin(result->box, 0); + t = mailbox_transaction_begin(result->box, 0, __func__); search_ctx = mailbox_search_init(t, result->search_args, NULL, 0, NULL); while (mailbox_search_next(search_ctx, &mail)) diff --git a/src/lib-storage/index/index-status.c b/src/lib-storage/index/index-status.c index 70dd2ab596..97722bd8a6 100644 --- a/src/lib-storage/index/index-status.c +++ b/src/lib-storage/index/index-status.c @@ -282,7 +282,7 @@ index_mailbox_get_first_save_date(struct mailbox *box, return 0; } - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); mail = mail_alloc(t, 0, NULL); for (seq = 1; seq <= hdr->messages_count; seq++) { mail_set_seq(mail, seq); diff --git a/src/lib-storage/index/index-storage.c b/src/lib-storage/index/index-storage.c index 541ad02611..95cd3bcc24 100644 --- a/src/lib-storage/index/index-storage.c +++ b/src/lib-storage/index/index-storage.c @@ -703,7 +703,7 @@ static int mailbox_expunge_all_data(struct mailbox *box) (void)mailbox_sync(box, MAILBOX_SYNC_FLAG_FULL_READ); - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); search_args = mail_search_build_init(); mail_search_build_add_all(search_args); diff --git a/src/lib-storage/index/index-thread.c b/src/lib-storage/index/index-thread.c index da4a1dc826..26733779e2 100644 --- a/src/lib-storage/index/index-thread.c +++ b/src/lib-storage/index/index-thread.c @@ -558,7 +558,7 @@ int mail_thread_init(struct mailbox *box, struct mail_search_args *args, ctx = i_new(struct mail_thread_context, 1); ctx->box = box; ctx->search_args = args; - ctx->t = mailbox_transaction_begin(ctx->box, 0); + ctx->t = mailbox_transaction_begin(ctx->box, 0, __func__); /* perform search first, so we don't break if there are INTHREAD keys */ search_ctx = mailbox_search_init(ctx->t, args, NULL, 0, NULL); diff --git a/src/lib-storage/list/mailbox-list-index-status.c b/src/lib-storage/list/mailbox-list-index-status.c index f5045a8755..1282c57f11 100644 --- a/src/lib-storage/list/mailbox-list-index-status.c +++ b/src/lib-storage/list/mailbox-list-index-status.c @@ -541,7 +541,7 @@ index_list_update_first_saved(struct mailbox *box, first_saved.timestamp = (uint32_t)-1; if (changes->first_uid != 0) { - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); mail = mail_alloc(t, MAIL_FETCH_SAVE_DATE, NULL); messages_count = mail_index_view_get_messages_count(box->view); for (seq = 1; seq <= messages_count; seq++) { diff --git a/src/lib-storage/mail-autoexpunge.c b/src/lib-storage/mail-autoexpunge.c index 13fbda0f9e..ba5de3691f 100644 --- a/src/lib-storage/mail-autoexpunge.c +++ b/src/lib-storage/mail-autoexpunge.c @@ -93,8 +93,7 @@ mailbox_autoexpunge(struct mailbox *box, unsigned int interval_time, if (size >= sizeof(uint32_t)) last_rename_stamp = *(const uint32_t*)data; - t = mailbox_transaction_begin(box, 0); - mailbox_transaction_set_reason(t, "autoexpunge"); + t = mailbox_transaction_begin(box, 0, "autoexpunge"); mail = mail_alloc(t, 0, NULL); hdr = mail_index_get_header(box->view); diff --git a/src/lib-storage/mail-storage.c b/src/lib-storage/mail-storage.c index 211890c117..d05ff22d5a 100644 --- a/src/lib-storage/mail-storage.c +++ b/src/lib-storage/mail-storage.c @@ -2060,7 +2060,8 @@ int mailbox_search_result_build(struct mailbox_transaction_context *t, struct mailbox_transaction_context * mailbox_transaction_begin(struct mailbox *box, - enum mailbox_transaction_flags flags) + enum mailbox_transaction_flags flags, + const char *reason) { struct mailbox_transaction_context *trans; @@ -2068,9 +2069,11 @@ mailbox_transaction_begin(struct mailbox *box, (box->flags & MAILBOX_FLAG_USE_STUBS) != 0); i_assert(box->opened); + i_assert(reason != NULL); box->transaction_count++; trans = box->v.transaction_begin(box, flags); + trans->reason = i_strdup(reason); trans->flags = flags; return trans; } @@ -2128,15 +2131,6 @@ void mailbox_transaction_rollback(struct mailbox_transaction_context **_t) box->transaction_count--; } -void mailbox_transaction_set_reason(struct mailbox_transaction_context *t, - const char *reason) -{ - i_assert(reason != NULL); - - i_free(t->reason); - t->reason = i_strdup(reason); -} - unsigned int mailbox_transaction_get_count(const struct mailbox *box) { return box->transaction_count; diff --git a/src/lib-storage/mail-storage.h b/src/lib-storage/mail-storage.h index aea9a07c70..17510c3739 100644 --- a/src/lib-storage/mail-storage.h +++ b/src/lib-storage/mail-storage.h @@ -641,16 +641,13 @@ void mailbox_notify_changes_stop(struct mailbox *box); struct mailbox_transaction_context * mailbox_transaction_begin(struct mailbox *box, - enum mailbox_transaction_flags flags); + enum mailbox_transaction_flags flags, + const char *reason); int mailbox_transaction_commit(struct mailbox_transaction_context **t); int mailbox_transaction_commit_get_changes( struct mailbox_transaction_context **t, struct mail_transaction_commit_changes *changes_r); void mailbox_transaction_rollback(struct mailbox_transaction_context **t); -/* Set a reason for why the transaction is created. This is used for - logging purposes. */ -void mailbox_transaction_set_reason(struct mailbox_transaction_context *t, - const char *reason); /* Return the number of active transactions for the mailbox. */ unsigned int mailbox_transaction_get_count(const struct mailbox *box) ATTR_PURE; /* When committing transaction, drop flag/keyword updates for messages whose diff --git a/src/lmtp/commands.c b/src/lmtp/commands.c index 27869dc8be..68081a5665 100644 --- a/src/lmtp/commands.c +++ b/src/lmtp/commands.c @@ -1048,7 +1048,7 @@ static int client_open_raw_mail(struct client *client, struct istream *input) return -1; } - trans = mailbox_transaction_begin(box, 0); + trans = mailbox_transaction_begin(box, 0, __func__); headers_ctx = mailbox_header_lookup_init(box, wanted_headers); client->state.raw_mail = mail_alloc(trans, 0, headers_ctx); diff --git a/src/plugins/acl/doveadm-acl.c b/src/plugins/acl/doveadm-acl.c index e8a80afab3..87ffa8ee2d 100644 --- a/src/plugins/acl/doveadm-acl.c +++ b/src/plugins/acl/doveadm-acl.c @@ -207,7 +207,8 @@ cmd_acl_mailbox_update(struct mailbox *box, struct mailbox_transaction_context *t; int ret; - t = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_EXTERNAL); + t = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_EXTERNAL, + __func__); ret = acl_mailbox_update_acl(t, update); if (mailbox_transaction_commit(&t) < 0) ret = -1; diff --git a/src/plugins/expire/expire-plugin.c b/src/plugins/expire/expire-plugin.c index 33edf4c289..88f235958b 100644 --- a/src/plugins/expire/expire-plugin.c +++ b/src/plugins/expire/expire-plugin.c @@ -80,7 +80,7 @@ static void first_save_timestamp(struct mailbox *box, time_t *stamp_r) *stamp_r = ioloop_time; - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); mail = mail_alloc(t, 0, NULL); /* find the first non-expunged mail. we're here because the first diff --git a/src/plugins/fts-squat/fts-backend-squat.c b/src/plugins/fts-squat/fts-backend-squat.c index 0bf87061b5..05c7f77c03 100644 --- a/src/plugins/fts-squat/fts-backend-squat.c +++ b/src/plugins/fts-squat/fts-backend-squat.c @@ -182,7 +182,7 @@ static int get_all_msg_uids(struct mailbox *box, ARRAY_TYPE(seq_range) *uids) struct mail *mail; int ret; - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); search_args = mail_search_build_init(); mail_search_build_add_all(search_args); diff --git a/src/plugins/imap-acl/imap-acl-plugin.c b/src/plugins/imap-acl/imap-acl-plugin.c index 52b06cb273..5ff7bc8a1b 100644 --- a/src/plugins/imap-acl/imap-acl-plugin.c +++ b/src/plugins/imap-acl/imap-acl-plugin.c @@ -545,7 +545,8 @@ cmd_acl_mailbox_update(struct mailbox *box, return -1; } - t = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_EXTERNAL); + t = mailbox_transaction_begin(box, MAILBOX_TRANSACTION_FLAG_EXTERNAL, + __func__); ret = acl_mailbox_update_acl(t, update); if (mailbox_transaction_commit(&t) < 0) ret = -1; diff --git a/src/plugins/lazy-expunge/lazy-expunge-plugin.c b/src/plugins/lazy-expunge/lazy-expunge-plugin.c index e0666e49a9..8a15f0c1b0 100644 --- a/src/plugins/lazy-expunge/lazy-expunge-plugin.c +++ b/src/plugins/lazy-expunge/lazy-expunge-plugin.c @@ -347,7 +347,8 @@ static void lazy_expunge_mail_expunge(struct mail *_mail) } lt->dest_trans = mailbox_transaction_begin(lt->dest_box, - MAILBOX_TRANSACTION_FLAG_EXTERNAL); + MAILBOX_TRANSACTION_FLAG_EXTERNAL, + __func__); } save_ctx = mailbox_save_alloc(lt->dest_trans); diff --git a/src/plugins/mail-crypt/doveadm-mail-crypt.c b/src/plugins/mail-crypt/doveadm-mail-crypt.c index dec8d1abda..99b99e7856 100644 --- a/src/plugins/mail-crypt/doveadm-mail-crypt.c +++ b/src/plugins/mail-crypt/doveadm-mail-crypt.c @@ -186,7 +186,7 @@ static int mcp_update_shared_keys(struct mailbox *box, struct mail_user *user, string_t *uid = t_str_new(64); struct mailbox_transaction_context *t = - mailbox_transaction_begin(box, 0); + mailbox_transaction_begin(box, 0, __func__); ret = 0; @@ -729,7 +729,7 @@ static int cmd_mcp_key_password_run(struct doveadm_mail_cmd_context *_ctx, if (ret == 1) { struct mailbox_transaction_context *t = - mailbox_transaction_begin(box, 0); + mailbox_transaction_begin(box, 0, __func__); struct dcrypt_private_key *key; const struct raw_key *raw_key; const char *algo = ctx->new_password != NULL ? diff --git a/src/plugins/mail-crypt/mail-crypt-acl-plugin.c b/src/plugins/mail-crypt/mail-crypt-acl-plugin.c index 67920d5814..3f3b654f47 100644 --- a/src/plugins/mail-crypt/mail-crypt-acl-plugin.c +++ b/src/plugins/mail-crypt/mail-crypt-acl-plugin.c @@ -108,7 +108,7 @@ mail_crypt_acl_unset_private_keys(struct mailbox *src_box, } struct mailbox_transaction_context *t; - t = mailbox_transaction_begin(src_box, 0); + t = mailbox_transaction_begin(src_box, 0, __func__); const char *const *hash; array_foreach(&digests, hash) { @@ -212,7 +212,7 @@ mail_crypt_acl_update_private_key(struct mailbox *src_box, t_array_init(&keys, 8); struct mailbox_transaction_context *t = - mailbox_transaction_begin(src_box, 0); + mailbox_transaction_begin(src_box, 0, __func__); /* get private keys from box */ if (mail_crypt_box_get_private_keys(src_box, &keys, error_r) < 0 || diff --git a/src/plugins/mail-crypt/mail-crypt-key.c b/src/plugins/mail-crypt/mail-crypt-key.c index 3c7432440a..783b138baf 100644 --- a/src/plugins/mail-crypt/mail-crypt-key.c +++ b/src/plugins/mail-crypt/mail-crypt-key.c @@ -498,7 +498,7 @@ int mail_crypt_user_set_private_key(struct mail_user *user, const char *pubid, return -1; } - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); if ((ret = mail_crypt_set_private_key(t, TRUE, FALSE, pubid, enc_key, key, error_r)) < 0) { @@ -522,7 +522,7 @@ int mail_crypt_box_set_private_key(struct mailbox *box, const char *pubid, int ret; struct mailbox_transaction_context *t; - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); if ((ret = mail_crypt_set_private_key(t, FALSE, FALSE, pubid, user_key, key, error_r)) < 0) { mailbox_transaction_rollback(&t); @@ -716,7 +716,7 @@ int mail_crypt_user_set_public_key(struct mail_user *user, const char *pubid, return -1; } - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); if ((ret = mail_crypt_set_public_key(t, TRUE, pubid, key, error_r)) == 0) { @@ -756,7 +756,7 @@ int mail_crypt_box_set_public_key(struct mailbox *box, const char *pubid, struct mailbox_transaction_context *t; struct mail_attribute_value value; - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); if ((ret = mail_crypt_set_public_key(t, FALSE, pubid, key, error_r)) == 0) { value.value_stream = NULL; diff --git a/src/plugins/mail-crypt/test-mail-key.c b/src/plugins/mail-crypt/test-mail-key.c index 4db1c85dbc..48685d1b40 100644 --- a/src/plugins/mail-crypt/test-mail-key.c +++ b/src/plugins/mail-crypt/test-mail-key.c @@ -409,7 +409,8 @@ static void test_old_key(void) i_fatal("mailbox_open(INBOX) failed: %s", mailbox_get_last_internal_error(box, NULL)); - struct mailbox_transaction_context *t = mailbox_transaction_begin(box, 0); + struct mailbox_transaction_context *t = + mailbox_transaction_begin(box, 0, __func__); test_mail_attribute_set(t, TRUE, FALSE, mcp_old_user_key_id, mcp_old_user_key, &error); diff --git a/src/plugins/pop3-migration/pop3-migration-plugin.c b/src/plugins/pop3-migration/pop3-migration-plugin.c index 3f76466978..dd3afb6388 100644 --- a/src/plugins/pop3-migration/pop3-migration-plugin.c +++ b/src/plugins/pop3-migration/pop3-migration-plugin.c @@ -377,7 +377,7 @@ static int pop3_map_read(struct mail_storage *storage, struct mailbox *pop3_box) return -1; } - t = mailbox_transaction_begin(pop3_box, 0); + t = mailbox_transaction_begin(pop3_box, 0, __func__); search_args = mail_search_build_init(); mail_search_build_add_all(search_args); ctx = mailbox_search_init(t, search_args, NULL, @@ -479,7 +479,7 @@ map_read_hdr_hashes(struct mailbox *box, struct array *msg_map, uint32_t seq1) struct msg_map_common *map; int ret = 0; - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); /* get all the cached hashes */ search_args = mail_search_build_init(); mail_search_build_add_seqset(search_args, seq1, array_count_i(msg_map)); @@ -560,7 +560,7 @@ static int imap_map_read(struct mailbox *box) i_assert(!array_is_created(&mbox->imap_msg_map)); p_array_init(&mbox->imap_msg_map, box->pool, status.messages); - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); search_args = mail_search_build_init(); mail_search_build_add_all(search_args); ctx = mailbox_search_init(t, search_args, NULL, @@ -803,7 +803,7 @@ static void imap_uidls_add_to_cache(struct mailbox *box) unsigned int i, count; unsigned int field_idx; - t = mailbox_transaction_begin(box, 0); + t = mailbox_transaction_begin(box, 0, __func__); mail = mail_alloc(t, 0, NULL); imail = INDEX_MAIL(mail); field_idx = imail->ibox->cache_fields[MAIL_CACHE_POP3_UIDL].idx; diff --git a/src/plugins/quota/quota-storage.c b/src/plugins/quota/quota-storage.c index e89d8f44a8..a66ee34f12 100644 --- a/src/plugins/quota/quota-storage.c +++ b/src/plugins/quota/quota-storage.c @@ -451,8 +451,7 @@ static void quota_mailbox_sync_notify(struct mailbox *box, uint32_t uid, struct mail_index_view *box_view = box->view; if (box->tmp_sync_view != NULL) box->view = box->tmp_sync_view; - qbox->expunge_trans = mailbox_transaction_begin(box, 0); - mailbox_transaction_set_reason(qbox->expunge_trans, "quota"); + qbox->expunge_trans = mailbox_transaction_begin(box, 0, "quota"); box->view = box_view; qbox->expunge_qt->tmp_mail = mail_alloc(qbox->expunge_trans, diff --git a/src/plugins/snarf/snarf-plugin.c b/src/plugins/snarf/snarf-plugin.c index 0ae74f0075..721bb6d89a 100644 --- a/src/plugins/snarf/snarf-plugin.c +++ b/src/plugins/snarf/snarf-plugin.c @@ -46,9 +46,10 @@ static int snarf(struct mailbox *srcbox, struct mailbox *destbox) if (mailbox_sync(srcbox, MAILBOX_SYNC_FLAG_FULL_READ) < 0) return -1; - src_trans = mailbox_transaction_begin(srcbox, 0); + src_trans = mailbox_transaction_begin(srcbox, 0, "snarf src_trans"); dest_trans = mailbox_transaction_begin(destbox, - MAILBOX_TRANSACTION_FLAG_EXTERNAL); + MAILBOX_TRANSACTION_FLAG_EXTERNAL, + "snarf dest_trans"); search_args = mail_search_build_init(); mail_search_build_add_all(search_args); diff --git a/src/plugins/trash/trash-plugin.c b/src/plugins/trash/trash-plugin.c index 08d2137e6d..996fe97b67 100644 --- a/src/plugins/trash/trash-plugin.c +++ b/src/plugins/trash/trash-plugin.c @@ -61,7 +61,7 @@ static int trash_clean_mailbox_open(struct trash_mailbox *trash) if (mailbox_sync(trash->box, MAILBOX_SYNC_FLAG_FULL_READ) < 0) return -1; - trash->trans = mailbox_transaction_begin(trash->box, 0); + trash->trans = mailbox_transaction_begin(trash->box, 0, __func__); search_args = mail_search_build_init(); mail_search_build_add_all(search_args); diff --git a/src/plugins/virtual/virtual-sync.c b/src/plugins/virtual/virtual-sync.c index 475a624554..da7627527f 100644 --- a/src/plugins/virtual/virtual-sync.c +++ b/src/plugins/virtual/virtual-sync.c @@ -113,7 +113,7 @@ virtual_backend_box_sync_mail_set(struct virtual_backend_box *bbox) struct mailbox_transaction_context *trans; if (bbox->sync_mail == NULL) { - trans = mailbox_transaction_begin(bbox->box, 0); + trans = mailbox_transaction_begin(bbox->box, 0, __func__); bbox->sync_mail = mail_alloc(trans, 0, NULL); } } @@ -500,7 +500,7 @@ static int virtual_sync_backend_box_init(struct virtual_backend_box *bbox) enum mailbox_search_result_flags result_flags; int ret; - trans = mailbox_transaction_begin(bbox->box, 0); + trans = mailbox_transaction_begin(bbox->box, 0, __func__); if (!bbox->search_args_initialized) { mail_search_args_init(bbox->search_args, bbox->box, FALSE, NULL); diff --git a/src/plugins/virtual/virtual-transaction.c b/src/plugins/virtual/virtual-transaction.c index 3d961f3276..057836a462 100644 --- a/src/plugins/virtual/virtual-transaction.c +++ b/src/plugins/virtual/virtual-transaction.c @@ -20,7 +20,7 @@ virtual_transaction_get(struct mailbox_transaction_context *trans, return bt[i]; } - new_bt = mailbox_transaction_begin(backend_box, trans->flags); + new_bt = mailbox_transaction_begin(backend_box, trans->flags, __func__); array_append(&vt->backend_transactions, &new_bt, 1); return new_bt; } diff --git a/src/pop3/pop3-client.c b/src/pop3/pop3-client.c index 98ff819a92..deb6141dab 100644 --- a/src/pop3/pop3-client.c +++ b/src/pop3/pop3-client.c @@ -69,7 +69,7 @@ static void client_commit_timeout(struct client *client) } (void)mailbox_transaction_commit(&client->trans); - client->trans = mailbox_transaction_begin(client->mailbox, 0); + client->trans = mailbox_transaction_begin(client->mailbox, 0, __func__); } static void client_idle_timeout(struct client *client) @@ -158,7 +158,7 @@ static int read_mailbox(struct client *client, uint32_t *failed_uid_r) client->uid_validity = status.uidvalidity; client->messages_count = status.messages; - t = mailbox_transaction_begin(client->mailbox, 0); + t = mailbox_transaction_begin(client->mailbox, 0, __func__); search_args = mail_search_build_init(); if (client->deleted_kw != NULL) { diff --git a/src/pop3/pop3-commands.c b/src/pop3/pop3-commands.c index 2986621c32..4bdbf53304 100644 --- a/src/pop3/pop3-commands.c +++ b/src/pop3/pop3-commands.c @@ -529,7 +529,8 @@ static int cmd_rset(struct client *client, const char *args ATTR_UNUSED) (void)mailbox_search_deinit(&search_ctx); (void)mailbox_transaction_commit(&client->trans); - client->trans = mailbox_transaction_begin(client->mailbox, 0); + client->trans = mailbox_transaction_begin(client->mailbox, 0, + __func__); } client_send_line(client, "+OK");