diff options
Diffstat (limited to 'lib/sqfs')
-rw-r--r-- | lib/sqfs/Makemodule.am | 14 | ||||
-rw-r--r-- | lib/sqfs/data_reader.c | 2 | ||||
-rw-r--r-- | lib/sqfs/data_writer/block.c (renamed from lib/sqfs/blk_proc/block.c) | 8 | ||||
-rw-r--r-- | lib/sqfs/data_writer/common.c (renamed from lib/sqfs/blk_proc/common.c) | 23 | ||||
-rw-r--r-- | lib/sqfs/data_writer/fragment.c (renamed from lib/sqfs/blk_proc/fragment.c) | 8 | ||||
-rw-r--r-- | lib/sqfs/data_writer/internal.h (renamed from lib/sqfs/blk_proc/internal.h) | 29 | ||||
-rw-r--r-- | lib/sqfs/data_writer/pthread.c (renamed from lib/sqfs/blk_proc/pthread.c) | 52 | ||||
-rw-r--r-- | lib/sqfs/data_writer/serial.c (renamed from lib/sqfs/blk_proc/serial.c) | 42 | ||||
-rw-r--r-- | lib/sqfs/io.c | 2 |
9 files changed, 87 insertions, 93 deletions
diff --git a/lib/sqfs/Makemodule.am b/lib/sqfs/Makemodule.am index e8b9284..459f359 100644 --- a/lib/sqfs/Makemodule.am +++ b/lib/sqfs/Makemodule.am @@ -1,6 +1,6 @@ LIBSQFS_HEARDS = include/sqfs/data.h include/sqfs/meta_writer.h \ include/sqfs/meta_reader.h include/sqfs/id_table.h \ - include/sqfs/compress.h include/sqfs/block_processor.h \ + include/sqfs/compress.h include/sqfs/data_writer.h \ include/sqfs/super.h include/sqfs/inode.h \ include/sqfs/dir.h include/sqfs/xattr.h \ include/sqfs/table.h include/sqfs/predef.h \ @@ -17,10 +17,10 @@ libsquashfs_la_SOURCES += lib/sqfs/dir_writer.c lib/sqfs/xattr_reader.c libsquashfs_la_SOURCES += lib/sqfs/read_table.c lib/sqfs/comp/compressor.c libsquashfs_la_SOURCES += lib/sqfs/io_stdin.c lib/sqfs/comp/internal.h libsquashfs_la_SOURCES += lib/sqfs/dir_reader.c lib/sqfs/read_tree.c -libsquashfs_la_SOURCES += lib/sqfs/inode.c lib/sqfs/blk_proc/fragment.c -libsquashfs_la_SOURCES += lib/sqfs/blk_proc/block.c lib/sqfs/io.c -libsquashfs_la_SOURCES += lib/sqfs/blk_proc/internal.h lib/sqfs/data_reader.c -libsquashfs_la_SOURCES += lib/sqfs/blk_proc/common.c +libsquashfs_la_SOURCES += lib/sqfs/inode.c lib/sqfs/data_writer/fragment.c +libsquashfs_la_SOURCES += lib/sqfs/data_writer/block.c lib/sqfs/io.c +libsquashfs_la_SOURCES += lib/sqfs/data_writer/internal.h lib/sqfs/data_reader.c +libsquashfs_la_SOURCES += lib/sqfs/data_writer/common.c libsquashfs_la_CPPFLAGS = $(AM_CPPFLAGS) libsquashfs_la_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) $(ZLIB_CFLAGS) libsquashfs_la_CFLAGS += $(XZ_CFLAGS) $(LZO_CFLAGS) $(LZ4_CFLAGS) @@ -29,10 +29,10 @@ libsquashfs_la_LIBADD = $(XZ_LIBS) $(ZLIB_LIBS) $(LZO_LIBS) $(LZ4_LIBS) libsquashfs_la_LIBADD += $(ZSTD_LIBS) $(PTHREAD_LIBS) libutil.la if HAVE_PTHREAD -libsquashfs_la_SOURCES += lib/sqfs/blk_proc/pthread.c +libsquashfs_la_SOURCES += lib/sqfs/data_writer/pthread.c libsquashfs_la_CPPFLAGS += -DWITH_PTHREAD else -libsquashfs_la_SOURCES += lib/sqfs/blk_proc/serial.c +libsquashfs_la_SOURCES += lib/sqfs/data_writer/serial.c endif if WITH_GZIP diff --git a/lib/sqfs/data_reader.c b/lib/sqfs/data_reader.c index 19b416b..0ea08ee 100644 --- a/lib/sqfs/data_reader.c +++ b/lib/sqfs/data_reader.c @@ -7,7 +7,7 @@ #define SQFS_BUILDING_DLL #include "config.h" -#include "sqfs/block_processor.h" +#include "sqfs/data_writer.h" #include "sqfs/data_reader.h" #include "sqfs/compress.h" #include "sqfs/error.h" diff --git a/lib/sqfs/blk_proc/block.c b/lib/sqfs/data_writer/block.c index 69a7119..9461737 100644 --- a/lib/sqfs/blk_proc/block.c +++ b/lib/sqfs/data_writer/block.c @@ -9,7 +9,7 @@ #include <string.h> -static int store_block_location(sqfs_block_processor_t *proc, uint64_t offset, +static int store_block_location(sqfs_data_writer_t *proc, uint64_t offset, uint32_t size, uint32_t chksum) { size_t new_sz; @@ -32,7 +32,7 @@ static int store_block_location(sqfs_block_processor_t *proc, uint64_t offset, return 0; } -static size_t deduplicate_blocks(sqfs_block_processor_t *proc, size_t count) +static size_t deduplicate_blocks(sqfs_data_writer_t *proc, size_t count) { size_t i, j; @@ -50,7 +50,7 @@ static size_t deduplicate_blocks(sqfs_block_processor_t *proc, size_t count) return i; } -static int allign_file(sqfs_block_processor_t *proc, sqfs_block_t *blk) +static int allign_file(sqfs_data_writer_t *proc, sqfs_block_t *blk) { if (!(blk->flags & SQFS_BLK_ALLIGN)) return 0; @@ -59,7 +59,7 @@ static int allign_file(sqfs_block_processor_t *proc, sqfs_block_t *blk) proc->devblksz); } -int process_completed_block(sqfs_block_processor_t *proc, sqfs_block_t *blk) +int process_completed_block(sqfs_data_writer_t *proc, sqfs_block_t *blk) { size_t start, count; uint64_t offset; diff --git a/lib/sqfs/blk_proc/common.c b/lib/sqfs/data_writer/common.c index a3c91eb..51acc1e 100644 --- a/lib/sqfs/blk_proc/common.c +++ b/lib/sqfs/data_writer/common.c @@ -18,10 +18,9 @@ void free_blk_list(sqfs_block_t *list) } } -int block_processor_init(sqfs_block_processor_t *proc, size_t max_block_size, - sqfs_compressor_t *cmp, unsigned int num_workers, - size_t max_backlog, size_t devblksz, - sqfs_file_t *file) +int data_writer_init(sqfs_data_writer_t *proc, size_t max_block_size, + sqfs_compressor_t *cmp, unsigned int num_workers, + size_t max_backlog, size_t devblksz, sqfs_file_t *file) { proc->max_block_size = max_block_size; proc->num_workers = num_workers; @@ -44,7 +43,7 @@ int block_processor_init(sqfs_block_processor_t *proc, size_t max_block_size, return 0; } -void block_processor_cleanup(sqfs_block_processor_t *proc) +void data_writer_cleanup(sqfs_data_writer_t *proc) { free_blk_list(proc->queue); free_blk_list(proc->done); @@ -55,8 +54,8 @@ void block_processor_cleanup(sqfs_block_processor_t *proc) free(proc); } -void block_processor_store_done(sqfs_block_processor_t *proc, - sqfs_block_t *blk, int status) +void data_writer_store_done(sqfs_data_writer_t *proc, sqfs_block_t *blk, + int status) { sqfs_block_t *it = proc->done, *prev = NULL; @@ -81,7 +80,7 @@ void block_processor_store_done(sqfs_block_processor_t *proc, proc->backlog -= 1; } -sqfs_block_t *block_processor_next_work_item(sqfs_block_processor_t *proc) +sqfs_block_t *data_writer_next_work_item(sqfs_data_writer_t *proc) { sqfs_block_t *blk; @@ -98,8 +97,8 @@ sqfs_block_t *block_processor_next_work_item(sqfs_block_processor_t *proc) return blk; } -int block_processor_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp, - uint8_t *scratch, size_t scratch_size) +int data_writer_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp, + uint8_t *scratch, size_t scratch_size) { ssize_t ret; @@ -129,8 +128,8 @@ int block_processor_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp, return 0; } -int sqfs_block_processor_write_fragment_table(sqfs_block_processor_t *proc, - sqfs_super_t *super) +int sqfs_data_writer_write_fragment_table(sqfs_data_writer_t *proc, + sqfs_super_t *super) { uint64_t start; size_t size; diff --git a/lib/sqfs/blk_proc/fragment.c b/lib/sqfs/data_writer/fragment.c index 5fa2349..e4fe9b4 100644 --- a/lib/sqfs/blk_proc/fragment.c +++ b/lib/sqfs/data_writer/fragment.c @@ -7,7 +7,7 @@ #define SQFS_BUILDING_DLL #include "internal.h" -static int grow_fragment_table(sqfs_block_processor_t *proc) +static int grow_fragment_table(sqfs_data_writer_t *proc) { size_t newsz; void *new; @@ -28,7 +28,7 @@ static int grow_fragment_table(sqfs_block_processor_t *proc) return 0; } -static int grow_deduplication_list(sqfs_block_processor_t *proc) +static int grow_deduplication_list(sqfs_data_writer_t *proc) { size_t new_sz; void *new; @@ -48,7 +48,7 @@ static int grow_deduplication_list(sqfs_block_processor_t *proc) return 0; } -static int store_fragment(sqfs_block_processor_t *proc, sqfs_block_t *frag, +static int store_fragment(sqfs_data_writer_t *proc, sqfs_block_t *frag, uint64_t hash) { int err = grow_deduplication_list(proc); @@ -72,7 +72,7 @@ static int store_fragment(sqfs_block_processor_t *proc, sqfs_block_t *frag, return 0; } -int process_completed_fragment(sqfs_block_processor_t *proc, sqfs_block_t *frag, +int process_completed_fragment(sqfs_data_writer_t *proc, sqfs_block_t *frag, sqfs_block_t **blk_out) { uint64_t hash; diff --git a/lib/sqfs/blk_proc/internal.h b/lib/sqfs/data_writer/internal.h index 1c403a9..10cc82c 100644 --- a/lib/sqfs/blk_proc/internal.h +++ b/lib/sqfs/data_writer/internal.h @@ -9,7 +9,7 @@ #include "config.h" -#include "sqfs/block_processor.h" +#include "sqfs/data_writer.h" #include "sqfs/compress.h" #include "sqfs/inode.h" #include "sqfs/table.h" @@ -47,14 +47,14 @@ typedef struct { #ifdef WITH_PTHREAD typedef struct { - sqfs_block_processor_t *shared; + sqfs_data_writer_t *shared; sqfs_compressor_t *cmp; pthread_t thread; uint8_t scratch[]; } compress_worker_t; #endif -struct sqfs_block_processor_t { +struct sqfs_data_writer_t { /* synchronization primitives */ #ifdef WITH_PTHREAD pthread_mutex_t mtx; @@ -107,32 +107,31 @@ struct sqfs_block_processor_t { #endif }; -SQFS_INTERNAL int process_completed_block(sqfs_block_processor_t *proc, +SQFS_INTERNAL int process_completed_block(sqfs_data_writer_t *proc, sqfs_block_t *block); SQFS_INTERNAL -int process_completed_fragment(sqfs_block_processor_t *proc, sqfs_block_t *frag, +int process_completed_fragment(sqfs_data_writer_t *proc, sqfs_block_t *frag, sqfs_block_t **blk_out); SQFS_INTERNAL void free_blk_list(sqfs_block_t *list); SQFS_INTERNAL -int block_processor_init(sqfs_block_processor_t *proc, size_t max_block_size, - sqfs_compressor_t *cmp, unsigned int num_workers, - size_t max_backlog, size_t devblksz, - sqfs_file_t *file); +int data_writer_init(sqfs_data_writer_t *proc, size_t max_block_size, + sqfs_compressor_t *cmp, unsigned int num_workers, + size_t max_backlog, size_t devblksz, sqfs_file_t *file); -SQFS_INTERNAL void block_processor_cleanup(sqfs_block_processor_t *proc); +SQFS_INTERNAL void data_writer_cleanup(sqfs_data_writer_t *proc); SQFS_INTERNAL -void block_processor_store_done(sqfs_block_processor_t *proc, - sqfs_block_t *blk, int status); +void data_writer_store_done(sqfs_data_writer_t *proc, sqfs_block_t *blk, + int status); SQFS_INTERNAL -sqfs_block_t *block_processor_next_work_item(sqfs_block_processor_t *proc); +sqfs_block_t *data_writer_next_work_item(sqfs_data_writer_t *proc); SQFS_INTERNAL -int block_processor_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp, - uint8_t *scratch, size_t scratch_size); +int data_writer_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp, + uint8_t *scratch, size_t scratch_size); #endif /* INTERNAL_H */ diff --git a/lib/sqfs/blk_proc/pthread.c b/lib/sqfs/data_writer/pthread.c index 7b95c7c..3170c11 100644 --- a/lib/sqfs/blk_proc/pthread.c +++ b/lib/sqfs/data_writer/pthread.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-3.0-or-later */ /* - * block_processor.c + * pthread.c * * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> */ @@ -10,41 +10,41 @@ static void *worker_proc(void *arg) { compress_worker_t *worker = arg; - sqfs_block_processor_t *shared = worker->shared; + sqfs_data_writer_t *shared = worker->shared; sqfs_block_t *blk = NULL; int status = 0; for (;;) { pthread_mutex_lock(&shared->mtx); if (blk != NULL) { - block_processor_store_done(shared, blk, status); + data_writer_store_done(shared, blk, status); pthread_cond_broadcast(&shared->done_cond); } while (shared->queue == NULL && shared->status == 0) pthread_cond_wait(&shared->queue_cond, &shared->mtx); - blk = block_processor_next_work_item(shared); + blk = data_writer_next_work_item(shared); pthread_mutex_unlock(&shared->mtx); if (blk == NULL) break; - status = block_processor_do_block(blk, worker->cmp, - worker->scratch, - shared->max_block_size); + status = data_writer_do_block(blk, worker->cmp, + worker->scratch, + shared->max_block_size); } return NULL; } -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, - size_t devblksz, - sqfs_file_t *file) +sqfs_data_writer_t *sqfs_data_writer_create(size_t max_block_size, + sqfs_compressor_t *cmp, + unsigned int num_workers, + size_t max_backlog, + size_t devblksz, + sqfs_file_t *file) { - sqfs_block_processor_t *proc; + sqfs_data_writer_t *proc; unsigned int i; int ret; @@ -60,8 +60,8 @@ sqfs_block_processor_t *sqfs_block_processor_create(size_t max_block_size, proc->queue_cond = (pthread_cond_t)PTHREAD_COND_INITIALIZER; proc->done_cond = (pthread_cond_t)PTHREAD_COND_INITIALIZER; - if (block_processor_init(proc, max_block_size, cmp, num_workers, - max_backlog, devblksz, file)) { + if (data_writer_init(proc, max_block_size, cmp, num_workers, + max_backlog, devblksz, file)) { goto fail_init; } @@ -113,11 +113,11 @@ fail_init: pthread_cond_destroy(&proc->done_cond); pthread_cond_destroy(&proc->queue_cond); pthread_mutex_destroy(&proc->mtx); - block_processor_cleanup(proc); + data_writer_cleanup(proc); return NULL; } -void sqfs_block_processor_destroy(sqfs_block_processor_t *proc) +void sqfs_data_writer_destroy(sqfs_data_writer_t *proc) { unsigned int i; @@ -137,10 +137,10 @@ void sqfs_block_processor_destroy(sqfs_block_processor_t *proc) pthread_cond_destroy(&proc->queue_cond); pthread_mutex_destroy(&proc->mtx); - block_processor_cleanup(proc); + data_writer_cleanup(proc); } -static void append_to_work_queue(sqfs_block_processor_t *proc, +static void append_to_work_queue(sqfs_data_writer_t *proc, sqfs_block_t *block) { if (proc->queue_last == NULL) { @@ -156,7 +156,7 @@ static void append_to_work_queue(sqfs_block_processor_t *proc, pthread_cond_broadcast(&proc->queue_cond); } -static int test_and_set_status(sqfs_block_processor_t *proc, int status) +static int test_and_set_status(sqfs_data_writer_t *proc, int status) { pthread_mutex_lock(&proc->mtx); if (proc->status == 0) { @@ -168,7 +168,7 @@ static int test_and_set_status(sqfs_block_processor_t *proc, int status) return status; } -static sqfs_block_t *try_dequeue(sqfs_block_processor_t *proc) +static sqfs_block_t *try_dequeue(sqfs_data_writer_t *proc) { sqfs_block_t *queue, *it, *prev; @@ -214,8 +214,7 @@ static sqfs_block_t *queue_merge(sqfs_block_t *lhs, sqfs_block_t *rhs) return head; } -static int process_done_queue(sqfs_block_processor_t *proc, - sqfs_block_t *queue) +static int process_done_queue(sqfs_data_writer_t *proc, sqfs_block_t *queue) { sqfs_block_t *it, *block = NULL; int status = 0; @@ -261,8 +260,7 @@ static int process_done_queue(sqfs_block_processor_t *proc, return status; } -int sqfs_block_processor_enqueue(sqfs_block_processor_t *proc, - sqfs_block_t *block) +int sqfs_data_writer_enqueue(sqfs_data_writer_t *proc, sqfs_block_t *block) { sqfs_block_t *queue; int status; @@ -296,7 +294,7 @@ int sqfs_block_processor_enqueue(sqfs_block_processor_t *proc, return 0; } -int sqfs_block_processor_finish(sqfs_block_processor_t *proc) +int sqfs_data_writer_finish(sqfs_data_writer_t *proc) { sqfs_block_t *queue; int status = 0; diff --git a/lib/sqfs/blk_proc/serial.c b/lib/sqfs/data_writer/serial.c index fcbf002..38dcc58 100644 --- a/lib/sqfs/blk_proc/serial.c +++ b/lib/sqfs/data_writer/serial.c @@ -1,42 +1,41 @@ /* SPDX-License-Identifier: LGPL-3.0-or-later */ /* - * block_processor.c + * serial.c * * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> */ #define SQFS_BUILDING_DLL #include "internal.h" -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, - size_t devblksz, - sqfs_file_t *file) +sqfs_data_writer_t *sqfs_data_writer_create(size_t max_block_size, + sqfs_compressor_t *cmp, + unsigned int num_workers, + size_t max_backlog, + size_t devblksz, + sqfs_file_t *file) { - sqfs_block_processor_t *proc; + sqfs_data_writer_t *proc; proc = alloc_flex(sizeof(*proc), 1, max_block_size); if (proc == NULL) return NULL; - if (block_processor_init(proc, max_block_size, cmp, num_workers, - max_backlog, devblksz, file)) { - block_processor_cleanup(proc); + if (data_writer_init(proc, max_block_size, cmp, num_workers, + max_backlog, devblksz, file)) { + data_writer_cleanup(proc); return NULL; } return proc; } -void sqfs_block_processor_destroy(sqfs_block_processor_t *proc) +void sqfs_data_writer_destroy(sqfs_data_writer_t *proc) { - block_processor_cleanup(proc); + data_writer_cleanup(proc); } -int sqfs_block_processor_enqueue(sqfs_block_processor_t *proc, - sqfs_block_t *block) +int sqfs_data_writer_enqueue(sqfs_data_writer_t *proc, sqfs_block_t *block) { sqfs_block_t *fragblk = NULL; @@ -69,9 +68,8 @@ int sqfs_block_processor_enqueue(sqfs_block_processor_t *proc, block = fragblk; } - proc->status = block_processor_do_block(block, proc->cmp, - proc->scratch, - proc->max_block_size); + proc->status = data_writer_do_block(block, proc->cmp, proc->scratch, + proc->max_block_size); if (proc->status == 0) proc->status = process_completed_block(proc, block); @@ -80,14 +78,14 @@ int sqfs_block_processor_enqueue(sqfs_block_processor_t *proc, return proc->status; } -int sqfs_block_processor_finish(sqfs_block_processor_t *proc) +int sqfs_data_writer_finish(sqfs_data_writer_t *proc) { if (proc->status != 0 || proc->frag_block == NULL) return proc->status; - proc->status = block_processor_do_block(proc->frag_block, proc->cmp, - proc->scratch, - proc->max_block_size); + proc->status = data_writer_do_block(proc->frag_block, proc->cmp, + proc->scratch, + proc->max_block_size); if (proc->status == 0) proc->status = process_completed_block(proc, proc->frag_block); diff --git a/lib/sqfs/io.c b/lib/sqfs/io.c index eafa1cd..40bf5d8 100644 --- a/lib/sqfs/io.c +++ b/lib/sqfs/io.c @@ -9,7 +9,7 @@ #include "sqfs/io.h" #include "sqfs/error.h" -#include "sqfs/block_processor.h" +#include "sqfs/data_writer.h" #include "util.h" #include <stdlib.h> |