]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mdbox: Split off mdbox_storage_rebuild_scan_prepare()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 16 Mar 2021 17:02:06 +0000 (19:02 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 29 Sep 2021 10:09:58 +0000 (10:09 +0000)
src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c

index e2e115448ea8e0214f44cb3e5435d93212059814..ba7a0c228d06c47c0942e2e530b1fda1e2fe7e14 100644 (file)
@@ -901,7 +901,8 @@ mdbox_storage_rebuild_scan_dir(struct mdbox_storage_rebuild_context *ctx,
        return ret;
 }
 
-static int mdbox_storage_rebuild_scan(struct mdbox_storage_rebuild_context *ctx)
+static int
+mdbox_storage_rebuild_scan_prepare(struct mdbox_storage_rebuild_context *ctx)
 {
        const void *data;
        size_t data_size;
@@ -937,7 +938,11 @@ static int mdbox_storage_rebuild_scan(struct mdbox_storage_rebuild_context *ctx)
                /* storage was already rebuilt by someone else */
                return 0;
        }
+       return 1;
+}
 
+static int mdbox_storage_rebuild_scan(struct mdbox_storage_rebuild_context *ctx)
+{
        i_warning("mdbox %s: rebuilding indexes", ctx->storage->storage_dir);
 
        if (mdbox_storage_rebuild_scan_dir(ctx, ctx->storage->storage_dir,
@@ -973,7 +978,8 @@ int mdbox_storage_rebuild_in_context(struct mdbox_storage *storage,
        }
 
        ctx = mdbox_storage_rebuild_init(storage, atomic);
-       ret = mdbox_storage_rebuild_scan(ctx);
+       if ((ret = mdbox_storage_rebuild_scan_prepare(ctx)) > 0)
+               ret = mdbox_storage_rebuild_scan(ctx);
        mdbox_storage_rebuild_deinit(ctx);
 
        if (ret == 0) {