int mail_transaction_log_sync_lock(struct mail_transaction_log *log, uint32_t *file_seq_r, uoff_t *file_offset_r) { i_assert(!log->index->log_sync_locked); if (mail_transaction_log_lock_head(log) < 0) return -1; /* update sync_offset */ if (mail_transaction_log_file_map(log->head, log->head->sync_offset, (uoff_t)-1) <= 0) { mail_transaction_log_file_unlock(log->head); return -1; } log->index->log_sync_locked = TRUE; *file_seq_r = log->head->hdr.file_seq; *file_offset_r = log->head->sync_offset; return 0; }
int mail_transaction_log_sync_lock(struct mail_transaction_log *log, const char *lock_reason, uint32_t *file_seq_r, uoff_t *file_offset_r) { i_assert(!log->index->log_sync_locked); if (mail_transaction_log_lock_head(log, lock_reason) < 0) return -1; /* update sync_offset */ if (mail_transaction_log_file_map(log->head, log->head->sync_offset, (uoff_t)-1) <= 0) { mail_transaction_log_file_unlock(log->head, t_strdup_printf( "%s - map failed", lock_reason)); return -1; } log->index->log_sync_locked = TRUE; *file_seq_r = log->head->hdr.file_seq; *file_offset_r = log->head->sync_offset; return 0; }