annotate src/lib-storage/index/dbox-multi/mdbox-storage.h @ 23017:c1d36f2575c7 default tip

lib-imap: Fix "Don't accept strings with NULs" cherry-pick
author Timo Sirainen <timo.sirainen@open-xchange.com>
date Thu, 29 Aug 2019 09:55:25 +0300
parents c238c55479c8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 #ifndef MDBOX_STORAGE_H
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2 #define MDBOX_STORAGE_H
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "index-storage.h"
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 #include "dbox-storage.h"
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 #include "mdbox-settings.h"
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 #define MDBOX_STORAGE_NAME "mdbox"
16895
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
9 #define MDBOX_DELETED_STORAGE_NAME "mdbox_deleted"
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 #define MDBOX_GLOBAL_INDEX_PREFIX "dovecot.map.index"
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 #define MDBOX_GLOBAL_DIR_NAME "storage"
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12 #define MDBOX_MAIL_FILE_PREFIX "m."
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 #define MDBOX_MAIL_FILE_FORMAT MDBOX_MAIL_FILE_PREFIX"%u"
10868
863eafcf8428 mdbox: Removed mdbox_max_open_files setting.
Timo Sirainen <tss@iki.fi>
parents: 10690
diff changeset
14 #define MDBOX_MAX_OPEN_UNUSED_FILES 2
863eafcf8428 mdbox: Removed mdbox_max_open_files setting.
Timo Sirainen <tss@iki.fi>
parents: 10690
diff changeset
15 #define MDBOX_CLOSE_UNUSED_FILES_TIMEOUT_SECS 30
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 #define MDBOX_INDEX_HEADER_MIN_SIZE (sizeof(uint32_t))
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18 struct mdbox_index_header {
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 uint32_t map_uid_validity;
13287
957060ca5b69 Moved GUID code to liblib. Use guid_128_t type consistently everywhere.
Timo Sirainen <tss@iki.fi>
parents: 12586
diff changeset
20 guid_128_t mailbox_guid;
16403
967ef2a7fa6f dbox: Don't cache pop3.uidl|order unless index header indicates there are those.
Timo Sirainen <tss@iki.fi>
parents: 14920
diff changeset
21 uint8_t flags; /* enum dbox_index_header_flags */
967ef2a7fa6f dbox: Don't cache pop3.uidl|order unless index header indicates there are those.
Timo Sirainen <tss@iki.fi>
parents: 14920
diff changeset
22 uint8_t unused[3];
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 };
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 struct mdbox_storage {
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26 struct dbox_storage storage;
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27 const struct mdbox_settings *set;
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 /* paths for storage directories */
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30 const char *storage_dir, *alt_storage_dir;
11218
ac62dbb6a355 mdbox: Renamed dbox_map* to mdbox_map*.
Timo Sirainen <tss@iki.fi>
parents: 11216
diff changeset
31 struct mdbox_map *map;
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32
14920
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14629
diff changeset
33 ARRAY(struct mdbox_file *) open_files;
10868
863eafcf8428 mdbox: Removed mdbox_max_open_files setting.
Timo Sirainen <tss@iki.fi>
parents: 10690
diff changeset
34 struct timeout *to_close_unused_files;
10975
52d9b2d8c1e8 mdbox: Do delayed storage rebuild when closing mailbox.
Timo Sirainen <tss@iki.fi>
parents: 10868
diff changeset
35
11177
a92389387cb7 mdbox: Moving messages to alt storage is done done with doveadm altmove command.
Timo Sirainen <tss@iki.fi>
parents: 10975
diff changeset
36 ARRAY_TYPE(uint32_t) move_to_alt_map_uids;
a92389387cb7 mdbox: Moving messages to alt storage is done done with doveadm altmove command.
Timo Sirainen <tss@iki.fi>
parents: 10975
diff changeset
37 ARRAY_TYPE(uint32_t) move_from_alt_map_uids;
a92389387cb7 mdbox: Moving messages to alt storage is done done with doveadm altmove command.
Timo Sirainen <tss@iki.fi>
parents: 10975
diff changeset
38
11216
de0ed7bea201 mdbox: Avoid rebuilding storage if another process already did it.
Timo Sirainen <tss@iki.fi>
parents: 11177
diff changeset
39 /* if non-zero, storage should be rebuilt (except if rebuild_count
de0ed7bea201 mdbox: Avoid rebuilding storage if another process already did it.
Timo Sirainen <tss@iki.fi>
parents: 11177
diff changeset
40 has changed from this value) */
de0ed7bea201 mdbox: Avoid rebuilding storage if another process already did it.
Timo Sirainen <tss@iki.fi>
parents: 11177
diff changeset
41 uint32_t corrupted_rebuild_count;
de0ed7bea201 mdbox: Avoid rebuilding storage if another process already did it.
Timo Sirainen <tss@iki.fi>
parents: 11177
diff changeset
42
de0ed7bea201 mdbox: Avoid rebuilding storage if another process already did it.
Timo Sirainen <tss@iki.fi>
parents: 11177
diff changeset
43 unsigned int corrupted:1;
10975
52d9b2d8c1e8 mdbox: Do delayed storage rebuild when closing mailbox.
Timo Sirainen <tss@iki.fi>
parents: 10868
diff changeset
44 unsigned int rebuilding_storage:1;
12320
b884441a713f mdbox: Added mdbox_preallocate_space setting to preallocate size for newly created files.
Timo Sirainen <tss@iki.fi>
parents: 11476
diff changeset
45 unsigned int preallocate_space:1;
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46 };
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 struct mdbox_mail_index_record {
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 uint32_t map_uid;
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 /* UNIX timestamp of when the message was saved/copied to this
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
51 mailbox */
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52 uint32_t save_date;
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53 };
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 struct mdbox_mailbox {
10660
56b1d4dd9c7d lib-storage: *_mailboxes don't descend from index_mailbox anymore, it's now a context.
Timo Sirainen <tss@iki.fi>
parents: 10367
diff changeset
56 struct mailbox box;
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 struct mdbox_storage *storage;
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59 uint32_t map_uid_validity;
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60 uint32_t ext_id, hdr_ext_id, guid_ext_id;
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
61
16895
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
62 unsigned int mdbox_deleted_synced:1;
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
63 unsigned int creating:1;
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64 };
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65
16895
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
66 extern struct dbox_storage_vfuncs mdbox_dbox_storage_vfuncs;
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67 extern struct mail_vfuncs mdbox_mail_vfuncs;
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69 int mdbox_mail_open(struct dbox_mail *mail, uoff_t *offset_r,
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
70 struct dbox_file **file_r);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
71
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72 /* Get map_uid for wanted message. */
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
73 int mdbox_mail_lookup(struct mdbox_mailbox *mbox, struct mail_index_view *view,
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74 uint32_t seq, uint32_t *map_uid_r);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75 uint32_t dbox_get_uidvalidity_next(struct mailbox_list *list);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76 int mdbox_read_header(struct mdbox_mailbox *mbox,
16403
967ef2a7fa6f dbox: Don't cache pop3.uidl|order unless index header indicates there are those.
Timo Sirainen <tss@iki.fi>
parents: 14920
diff changeset
77 struct mdbox_index_header *hdr, bool *need_resize_r);
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78 void mdbox_update_header(struct mdbox_mailbox *mbox,
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79 struct mail_index_transaction *trans,
14629
c93ca5e46a8a Marked functions parameters that are allowed to be NULL. Some APIs were also changed.
Timo Sirainen <tss@iki.fi>
parents: 13287
diff changeset
80 const struct mailbox_update *update) ATTR_NULL(3);
16781
98702a45784c dbox: Fixed "UIDVALIDITY=0" error race condition.
Timo Sirainen <tss@iki.fi>
parents: 16403
diff changeset
81 int mdbox_mailbox_create_indexes(struct mailbox *box,
98702a45784c dbox: Fixed "UIDVALIDITY=0" error race condition.
Timo Sirainen <tss@iki.fi>
parents: 16403
diff changeset
82 const struct mailbox_update *update,
98702a45784c dbox: Fixed "UIDVALIDITY=0" error race condition.
Timo Sirainen <tss@iki.fi>
parents: 16403
diff changeset
83 struct mail_index_transaction *trans);
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
84
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 struct mail_save_context *
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 mdbox_save_alloc(struct mailbox_transaction_context *_t);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87 int mdbox_save_begin(struct mail_save_context *ctx, struct istream *input);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88 int mdbox_save_finish(struct mail_save_context *ctx);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
89 void mdbox_save_cancel(struct mail_save_context *ctx);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
90
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 struct dbox_file *
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92 mdbox_save_file_get_file(struct mailbox_transaction_context *t,
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 uint32_t seq, uoff_t *offset_r);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
94
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95 int mdbox_transaction_save_commit_pre(struct mail_save_context *ctx);
10367
75d3d4374dda Transaction commits can now track how many uid/modseq updates were ignored.
Timo Sirainen <tss@iki.fi>
parents: 9977
diff changeset
96 void mdbox_transaction_save_commit_post(struct mail_save_context *ctx,
75d3d4374dda Transaction commits can now track how many uid/modseq updates were ignored.
Timo Sirainen <tss@iki.fi>
parents: 9977
diff changeset
97 struct mail_index_transaction_commit_result *result);
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98 void mdbox_transaction_save_rollback(struct mail_save_context *ctx);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
99
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
100 int mdbox_copy(struct mail_save_context *ctx, struct mail *mail);
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
101
11177
a92389387cb7 mdbox: Moving messages to alt storage is done done with doveadm altmove command.
Timo Sirainen <tss@iki.fi>
parents: 10975
diff changeset
102 void mdbox_purge_alt_flag_change(struct mail *mail, bool move_to_alt);
a92389387cb7 mdbox: Moving messages to alt storage is done done with doveadm altmove command.
Timo Sirainen <tss@iki.fi>
parents: 10975
diff changeset
103 int mdbox_purge(struct mail_storage *storage);
a92389387cb7 mdbox: Moving messages to alt storage is done done with doveadm altmove command.
Timo Sirainen <tss@iki.fi>
parents: 10975
diff changeset
104
16895
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
105 int mdbox_storage_create(struct mail_storage *_storage,
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
106 struct mail_namespace *ns, const char **error_r);
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
107 void mdbox_storage_destroy(struct mail_storage *_storage);
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
108 int mdbox_mailbox_open(struct mailbox *box);
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
109
11216
de0ed7bea201 mdbox: Avoid rebuilding storage if another process already did it.
Timo Sirainen <tss@iki.fi>
parents: 11177
diff changeset
110 void mdbox_storage_set_corrupted(struct mdbox_storage *storage);
16895
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
111 void mdbox_set_mailbox_corrupted(struct mailbox *box);
c238c55479c8 mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0
Timo Sirainen <tss@iki.fi>
parents: 16781
diff changeset
112 void mdbox_set_file_corrupted(struct dbox_file *file);
11216
de0ed7bea201 mdbox: Avoid rebuilding storage if another process already did it.
Timo Sirainen <tss@iki.fi>
parents: 11177
diff changeset
113
9977
0bb321c347ae Split dbox (single-dbox) and mdbox (multi-dbox) into separate storage backends.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
114 #endif