allow to set chunk_size, and define PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE

This commit is contained in:
Dietmar Maurer 2020-02-13 12:06:53 +01:00
parent 070e55bc37
commit 056dd8fc80
2 changed files with 9 additions and 6 deletions

View File

@ -25,7 +25,7 @@ void main(int argc, char **argv) {
char *fingerprint = getenv("PBS_FINGERPRINT"); char *fingerprint = getenv("PBS_FINGERPRINT");
ProxmoxBackupHandle *pbs = proxmox_backup_new ProxmoxBackupHandle *pbs = proxmox_backup_new
(repository, backup_id, backup_time, password, NULL, NULL, fingerprint, &pbs_error); (repository, backup_id, backup_time, PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE, password, NULL, NULL, fingerprint, &pbs_error);
if (pbs == NULL) { if (pbs == NULL) {
fprintf(stderr, "proxmox_backup_new failed - %s\n", pbs_error); fprintf(stderr, "proxmox_backup_new failed - %s\n", pbs_error);
@ -50,11 +50,9 @@ void main(int argc, char **argv) {
int img_chunks = 16; int img_chunks = 16;
int chunk_size = 1024*1024*4;
// fixme: chunk size ??
printf("register_image\n"); printf("register_image\n");
int dev_id = proxmox_backup_register_image(pbs, "scsi-drive0", chunk_size*img_chunks, &pbs_error); int dev_id = proxmox_backup_register_image(pbs, "scsi-drive0", PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE*img_chunks, &pbs_error);
if (dev_id < 0) { if (dev_id < 0) {
fprintf(stderr, "proxmox_backup_register_image failed - %s\n", pbs_error); fprintf(stderr, "proxmox_backup_register_image failed - %s\n", pbs_error);
proxmox_backup_free_error(pbs_error); proxmox_backup_free_error(pbs_error);
@ -63,7 +61,7 @@ void main(int argc, char **argv) {
for (int i = 0; i < img_chunks; i++) { for (int i = 0; i < img_chunks; i++) {
printf("write a single chunk %d\n", i); printf("write a single chunk %d\n", i);
proxmox_backup_write_data(pbs, dev_id, NULL, i*chunk_size, chunk_size, &pbs_error); proxmox_backup_write_data(pbs, dev_id, NULL, i*PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE, PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE, &pbs_error);
} }
printf("close_image\n"); printf("close_image\n");

View File

@ -24,6 +24,8 @@ use worker_task::*;
mod restore; mod restore;
use restore::*; use restore::*;
pub const PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE: u64 = 1024*1024*4;
/// Free returned error messages /// Free returned error messages
/// ///
/// All calls can return error messages, but they are allocated using /// All calls can return error messages, but they are allocated using
@ -105,12 +107,15 @@ impl GotResultCondition {
} }
/// Create a new instance /// Create a new instance
///
/// Uses `PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE` if `chunk_size` is zero.
#[no_mangle] #[no_mangle]
#[allow(clippy::not_unsafe_ptr_arg_deref)] #[allow(clippy::not_unsafe_ptr_arg_deref)]
pub extern "C" fn proxmox_backup_new( pub extern "C" fn proxmox_backup_new(
repo: *const c_char, repo: *const c_char,
backup_id: *const c_char, backup_id: *const c_char,
backup_time: u64, backup_time: u64,
chunk_size: u64,
password: *const c_char, password: *const c_char,
keyfile: *const c_char, keyfile: *const c_char,
key_password: *const c_char, key_password: *const c_char,
@ -154,7 +159,7 @@ pub extern "C" fn proxmox_backup_new(
host: repo.host().to_owned(), host: repo.host().to_owned(),
user: repo.user().to_owned(), user: repo.user().to_owned(),
store: repo.store().to_owned(), store: repo.store().to_owned(),
chunk_size: 4*1024*1024, chunk_size: if chunk_size > 0 { chunk_size } else { PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE },
backup_id, backup_id,
password, password,
backup_time, backup_time,