[dovecot-cvs]
dovecot/src/lib-storage/index/dbox dbox-storage.c, 1.2,
1.3 dbox-storage.h, 1.3, 1.4 dbox-uidlist.c, 1.7, 1.8
cras at dovecot.org
cras at dovecot.org
Wed Jan 11 21:26:07 EET 2006
Update of /var/lib/cvs/dovecot/src/lib-storage/index/dbox
In directory talvi:/tmp/cvs-serv10107/src/lib-storage/index/dbox
Modified Files:
dbox-storage.c dbox-storage.h dbox-uidlist.c
Log Message:
Added dbox_rotate_min_size and fixed rotation checks.
Index: dbox-storage.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-storage/index/dbox/dbox-storage.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- dbox-storage.c 5 Jan 2006 01:19:43 -0000 1.2
+++ dbox-storage.c 11 Jan 2006 19:26:05 -0000 1.3
@@ -306,6 +306,11 @@
mbox->rotate_size = (uoff_t)strtoul(value, NULL, 10) * 1024;
else
mbox->rotate_size = DBOX_DEFAULT_ROTATE_SIZE;
+ value = getenv("DBOX_ROTATE_MIN_SIZE");
+ if (value != NULL)
+ mbox->rotate_min_size = (uoff_t)strtoul(value, NULL, 10) * 1024;
+ else
+ mbox->rotate_min_size = DBOX_DEFAULT_ROTATE_MIN_SIZE;
value = getenv("DBOX_ROTATE_DAYS");
if (value != NULL)
mbox->rotate_days = (unsigned int)strtoul(value, NULL, 10);
Index: dbox-storage.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-storage/index/dbox/dbox-storage.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- dbox-storage.h 5 Jan 2006 01:19:43 -0000 1.3
+++ dbox-storage.h 11 Jan 2006 19:26:05 -0000 1.4
@@ -15,6 +15,7 @@
/* Default rotation settings */
#define DBOX_DEFAULT_ROTATE_SIZE (2*1024*1024)
+#define DBOX_DEFAULT_ROTATE_MIN_SIZE (1024*16)
#define DBOX_DEFAULT_ROTATE_DAYS 0
struct dbox_uidlist;
@@ -80,7 +81,7 @@
uint32_t dbox_file_ext_idx;
uint32_t dbox_offset_ext_idx;
- uoff_t rotate_size;
+ uoff_t rotate_size, rotate_min_size;
unsigned int rotate_days;
};
Index: dbox-uidlist.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-storage/index/dbox/dbox-uidlist.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- dbox-uidlist.c 5 Jan 2006 01:19:43 -0000 1.7
+++ dbox-uidlist.c 11 Jan 2006 19:26:05 -0000 1.8
@@ -847,6 +847,11 @@
return stamp - (3600*24 * (days-1));
}
+#define DBOX_CAN_APPEND(mbox, create_time, file_size, min_usable_timestamp) \
+ (((create_time) >= (min_usable_timestamp) && \
+ (file_size) < (mbox)->rotate_size) || \
+ (file_size) < (mbox)->rotate_min_size)
+
int dbox_uidlist_append_locked(struct dbox_uidlist_append_ctx *ctx,
struct dbox_file **file_r)
{
@@ -867,8 +872,9 @@
/* check first from already opened files */
files = array_get(&ctx->files, &count);
for (i = 0; i < count; i++) {
- if (files[i]->file->create_time >= min_usable_timestamp ||
- files[i]->append_offset < mbox->rotate_size) {
+ if (DBOX_CAN_APPEND(mbox, files[i]->file->create_time,
+ files[i]->append_offset,
+ min_usable_timestamp)) {
if (dbox_reopen_file(ctx, files[i]) < 0)
return -1;
@@ -885,8 +891,9 @@
for (i = 0;; i++) {
file_seq = 0;
for (; i < count; i++) {
- if ((entries[i]->create_time >= min_usable_timestamp ||
- entries[i]->file_size < mbox->rotate_size) &&
+ if (DBOX_CAN_APPEND(mbox, entries[i]->create_time,
+ entries[i]->file_size,
+ min_usable_timestamp) &&
!dbox_uidlist_files_lookup(ctx,
entries[i]->file_seq)) {
file_seq = entries[i]->file_seq;
More information about the dovecot-cvs
mailing list