From b86cbb04c9cc72506783e175e871338b1f0e6750 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Mon, 23 Sep 2019 15:28:25 +0200 Subject: Move the bulk of the work from the data writer to the block processor Instead of calling a callback, the block processor now takes care of writing the data blocks to the file in the correct order, keeping track of fragment blocks and deduplicating blocks. Some cleanup work remains to be done and the statistics have to be repaired (yet again). Signed-off-by: David Oberhollenzer --- lib/sqfs/blk_proc/serial.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'lib/sqfs/blk_proc/serial.c') diff --git a/lib/sqfs/blk_proc/serial.c b/lib/sqfs/blk_proc/serial.c index ee172de..b6c17fb 100644 --- a/lib/sqfs/blk_proc/serial.c +++ b/lib/sqfs/blk_proc/serial.c @@ -11,8 +11,8 @@ sqfs_block_processor_t *sqfs_block_processor_create(size_t max_block_size, sqfs_compressor_t *cmp, unsigned int num_workers, size_t max_backlog, - void *user, - sqfs_block_cb callback) + size_t devblksz, + sqfs_file_t *file) { sqfs_block_processor_t *proc; (void)num_workers; @@ -25,8 +25,16 @@ sqfs_block_processor_t *sqfs_block_processor_create(size_t max_block_size, proc->max_block_size = max_block_size; proc->cmp = cmp; - proc->cb = callback; - proc->user = user; + proc->devblksz = devblksz; + proc->file = file; + proc->max_blocks = INIT_BLOCK_COUNT; + + proc->blocks = alloc_array(sizeof(proc->blocks[0]), proc->max_blocks); + if (proc->blocks == NULL) { + free(proc); + return NULL; + } + return proc; } -- cgit v1.2.3