summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-09-10 15:56:35 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-09-10 15:56:35 +0200
commitcd662fccc563e18762e2e6a16d040e0474b6e5f9 (patch)
treedf44dc902e57960d0f193b9adc2fb71a0086a17e
parent1fe6b2aa4158516f9c6cf5751cc68aafef1af620 (diff)
Minor cleanup of the block processor
- Set the "compression failed" flag in the common implementation. - Use static initializers for the pthread code. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
-rw-r--r--lib/sqfs/block_processor_parallel.c21
-rw-r--r--lib/sqfs/process_block.c4
2 files changed, 8 insertions, 17 deletions
diff --git a/lib/sqfs/block_processor_parallel.c b/lib/sqfs/block_processor_parallel.c
index a63135a..a00bf12 100644
--- a/lib/sqfs/block_processor_parallel.c
+++ b/lib/sqfs/block_processor_parallel.c
@@ -105,10 +105,8 @@ static void *worker_proc(void *arg)
shared->queue_last = NULL;
pthread_mutex_unlock(&shared->mtx);
- if (sqfs_block_process(blk, worker->cmp, worker->scratch,
- shared->max_block_size)) {
- blk->flags |= SQFS_BLK_COMPRESS_ERROR;
- }
+ sqfs_block_process(blk, worker->cmp, worker->scratch,
+ shared->max_block_size);
}
return NULL;
}
@@ -137,15 +135,9 @@ sqfs_block_processor_t *sqfs_block_processor_create(size_t max_block_size,
proc->user = user;
proc->num_workers = num_workers;
proc->max_backlog = max_backlog;
-
- if (pthread_mutex_init(&proc->mtx, NULL))
- goto fail_free;
-
- if (pthread_cond_init(&proc->queue_cond, NULL))
- goto fail_mtx;
-
- if (pthread_cond_init(&proc->done_cond, NULL))
- goto fail_cond;
+ proc->mtx = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;
+ proc->queue_cond = (pthread_cond_t)PTHREAD_COND_INITIALIZER;
+ proc->done_cond = (pthread_cond_t)PTHREAD_COND_INITIALIZER;
for (i = 0; i < num_workers; ++i) {
proc->workers[i] = alloc_flex(sizeof(compress_worker_t),
@@ -193,11 +185,8 @@ fail_init:
}
}
pthread_cond_destroy(&proc->done_cond);
-fail_cond:
pthread_cond_destroy(&proc->queue_cond);
-fail_mtx:
pthread_mutex_destroy(&proc->mtx);
-fail_free:
free(proc);
return NULL;
}
diff --git a/lib/sqfs/process_block.c b/lib/sqfs/process_block.c
index f8b4d6c..3289767 100644
--- a/lib/sqfs/process_block.c
+++ b/lib/sqfs/process_block.c
@@ -26,8 +26,10 @@ int sqfs_block_process(sqfs_block_t *block, sqfs_compressor_t *cmp,
ret = cmp->do_block(cmp, block->data, block->size,
scratch, scratch_size);
- if (ret < 0)
+ if (ret < 0) {
+ block->flags |= SQFS_BLK_COMPRESS_ERROR;
return ret;
+ }
if (ret > 0) {
memcpy(block->data, scratch, ret);