diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-01-28 21:23:21 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-01-29 17:22:50 +0100 |
commit | 9d5b0c381a7961a14d2a94a6b31a4e25a2543eae (patch) | |
tree | 089a3cc96f54cd7b09762840d03e4dc2420c5ea9 | |
parent | 60ff56b68ea0593782d7a2ef0ac4e667437418d2 (diff) |
Rename sqfs_data_writer_t back to sqfs_block_processor_t
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
-rw-r--r-- | include/common.h | 15 | ||||
-rw-r--r-- | include/sqfs/block.h | 18 | ||||
-rw-r--r-- | include/sqfs/block_processor.h (renamed from include/sqfs/data_writer.h) | 96 | ||||
-rw-r--r-- | include/sqfs/predef.h | 2 | ||||
-rw-r--r-- | lib/common/data_writer.c | 8 | ||||
-rw-r--r-- | lib/common/statistics.c | 15 | ||||
-rw-r--r-- | lib/common/writer.c | 19 | ||||
-rw-r--r-- | lib/sqfs/Makemodule.am | 19 | ||||
-rw-r--r-- | lib/sqfs/block_processor/block.c (renamed from lib/sqfs/data_writer/block.c) | 12 | ||||
-rw-r--r-- | lib/sqfs/block_processor/common.c (renamed from lib/sqfs/data_writer/common.c) | 16 | ||||
-rw-r--r-- | lib/sqfs/block_processor/fileapi.c (renamed from lib/sqfs/data_writer/fileapi.c) | 18 | ||||
-rw-r--r-- | lib/sqfs/block_processor/fragment.c (renamed from lib/sqfs/data_writer/fragment.c) | 2 | ||||
-rw-r--r-- | lib/sqfs/block_processor/internal.h (renamed from lib/sqfs/data_writer/internal.h) | 27 | ||||
-rw-r--r-- | lib/sqfs/block_processor/serial.c (renamed from lib/sqfs/data_writer/serial.c) | 34 | ||||
-rw-r--r-- | lib/sqfs/block_processor/winpthread.c (renamed from lib/sqfs/data_writer/winpthread.c) | 68 | ||||
-rw-r--r-- | mkfs/mkfs.c | 4 |
16 files changed, 190 insertions, 183 deletions
diff --git a/include/common.h b/include/common.h index 386d8fd..f2431ab 100644 --- a/include/common.h +++ b/include/common.h @@ -18,7 +18,7 @@ #include "sqfs/error.h" #include "sqfs/meta_writer.h" #include "sqfs/data_reader.h" -#include "sqfs/data_writer.h" +#include "sqfs/block_processor.h" #include "sqfs/dir_writer.h" #include "sqfs/dir_reader.h" #include "sqfs/block.h" @@ -42,10 +42,10 @@ typedef struct { size_t frag_dup; sqfs_u64 bytes_written; sqfs_u64 bytes_read; -} data_writer_stats_t; +} block_processor_stats_t; typedef struct { - sqfs_data_writer_t *data; + sqfs_block_processor_t *data; sqfs_dir_writer_t *dirwr; sqfs_meta_writer_t *dm; sqfs_meta_writer_t *im; @@ -54,7 +54,7 @@ typedef struct { sqfs_file_t *outfile; sqfs_super_t super; fstree_t fs; - data_writer_stats_t stats; + block_processor_stats_t stats; sqfs_xattr_writer_t *xwr; } sqfs_writer_t; @@ -99,7 +99,7 @@ typedef struct sqfs_hard_link_t { int sqfs_serialize_fstree(const char *filename, sqfs_writer_t *wr); /* Print out fancy statistics for squashfs packing tools */ -void sqfs_print_statistics(sqfs_super_t *super, data_writer_stats_t *stats); +void sqfs_print_statistics(sqfs_super_t *super, block_processor_stats_t *stats); void compressor_print_available(void); @@ -122,9 +122,10 @@ int sqfs_data_reader_dump(const char *name, sqfs_data_reader_t *data, sqfs_file_t *sqfs_get_stdin_file(FILE *fp, const sparse_map_t *map, sqfs_u64 size); -void register_stat_hooks(sqfs_data_writer_t *data, data_writer_stats_t *stats); +void register_stat_hooks(sqfs_block_processor_t *data, + block_processor_stats_t *stats); -int write_data_from_file(const char *filename, sqfs_data_writer_t *data, +int write_data_from_file(const char *filename, sqfs_block_processor_t *data, sqfs_inode_generic_t *inode, sqfs_file_t *file, int flags); diff --git a/include/sqfs/block.h b/include/sqfs/block.h index b37cdd5..1098c96 100644 --- a/include/sqfs/block.h +++ b/include/sqfs/block.h @@ -68,14 +68,14 @@ typedef enum { * @brief Only calculate checksum, do NOT compress the data. * * If set, the blocks of a file will not be compressed by the - * @ref sqfs_data_writer_t. + * @ref sqfs_block_processor_t. */ SQFS_BLK_DONT_COMPRESS = 0x0001, /** * @brief Align the block on disk to device block size. * - * If set, the @ref sqfs_data_writer_t will add padding before the + * If set, the @ref sqfs_block_processor_t will add padding before the * first block of the affected file and after the last block. */ SQFS_BLK_ALIGN = 0x0002, @@ -83,38 +83,38 @@ typedef enum { /** * @brief Don't add the tail end of a file to a fragment block. * - * If set, the @ref sqfs_data_writer_t will always generate a final + * If set, the @ref sqfs_block_processor_t will always generate a final * block for a file, even if it is truncated. It will not add the * tail end to a fragment block. */ SQFS_BLK_DONT_FRAGMENT = 0x0004, /** - * @brief Set by the @ref sqfs_data_writer_t on the first + * @brief Set by the @ref sqfs_block_processor_t on the first * block of a file. */ SQFS_BLK_FIRST_BLOCK = 0x0800, /** - * @brief Set by the @ref sqfs_data_writer_t on the last + * @brief Set by the @ref sqfs_block_processor_t on the last * block of a file. */ SQFS_BLK_LAST_BLOCK = 0x1000, /** - * @brief Set by the @ref sqfs_data_writer_t to indicate that a block - * is a tail end of a file and the block. + * @brief Set by the @ref sqfs_block_processor_t to indicate that a + * block is a tail end of a file and the block. */ SQFS_BLK_IS_FRAGMENT = 0x2000, /** - * @brief Set by the @ref sqfs_data_writer_t on fragment blocks that + * @brief Set by the @ref sqfs_block_processor_t on fragment blocks that * it generates. */ SQFS_BLK_FRAGMENT_BLOCK = 0x4000, /** - * @brief Set by @ref sqfs_data_writer_t if the block was + * @brief Set by @ref sqfs_block_processor_t if the block was * actually compressed. */ SQFS_BLK_IS_COMPRESSED = 0x8000, diff --git a/include/sqfs/data_writer.h b/include/sqfs/block_processor.h index 7b6ee0f..c6dd734 100644 --- a/include/sqfs/data_writer.h +++ b/include/sqfs/block_processor.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: LGPL-3.0-or-later */ /* - * data_writer.h - This file is part of libsquashfs + * block_processor.h - This file is part of libsquashfs * * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> * @@ -17,25 +17,26 @@ * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#ifndef SFQS_DATA_WRITER_H -#define SFQS_DATA_WRITER_H +#ifndef SFQS_BLOCK_PROCESSOR_H +#define SFQS_BLOCK_PROCESSOR_H #include "sqfs/predef.h" /** - * @file data_writer.h + * @file block_processor.h * * @brief Contains declarations for the data block processor. */ /** - * @struct sqfs_data_writer_t + * @struct sqfs_block_processor_t * * @brief Abstracts generating of file data and fragment blocks. * * This data structure provides a simple begin/append/end interface - * to generate file data blocks (see @ref sqfs_data_writer_begin_file, - * @ref sqfs_data_writer_append and @ref sqfs_data_writer_end respectively). + * to generate file data blocks (see @ref sqfs_block_processor_begin_file, + * @ref sqfs_block_processor_append and @ref sqfs_block_processor_end + * respectively). * * Internally it takes care of partitioning data in the correct block sizes, * adding tail-ens to fragment blocks, compressing the data, deduplicating data @@ -47,7 +48,7 @@ * * @brief A set of hooks for tapping into the data writer. * - * This structure can be registered with an @ref sqfs_data_writer_t and + * This structure can be registered with an @ref sqfs_block_processor_t and * contains function pointers that will be called during various stages * when writing data to disk. * @@ -63,9 +64,9 @@ struct sqfs_block_hooks_t { * * This is required for future expandabillity while maintaining ABI * compatibillity. At the current time, the implementation of - * @ref sqfs_data_writer_set_hooks rejects any hook struct where this - * isn't the exact size. If new hooks are added in the future, the - * struct grows and the future implementation can tell by the size + * @ref sqfs_block_processor_set_hooks rejects any hook struct where + * this isn't the exact size. If new hooks are added in the future, + * the struct grows and the future implementation can tell by the size * whether the application uses the new version or the old one. */ size_t size; @@ -155,7 +156,7 @@ extern "C" { /** * @brief Create a data block writer. * - * @memberof sqfs_data_writer_t + * @memberof sqfs_block_processor_t * * @param max_block_size The maximum size of a data block. Required for the * internal scratch buffer used for compressing data. @@ -174,39 +175,40 @@ extern "C" { * failure or on failure to create and initialize the worker threads. */ SQFS_API -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 *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); /** * @brief Destroy a data writer and free all memory used by it. * - * @memberof sqfs_data_writer_t + * @memberof sqfs_block_processor_t * * @param proc A pointer to a data writer object. */ -SQFS_API void sqfs_data_writer_destroy(sqfs_data_writer_t *proc); +SQFS_API void sqfs_block_processor_destroy(sqfs_block_processor_t *proc); /** * @brief Start writing a file. * - * @memberof sqfs_data_writer_t + * @memberof sqfs_block_processor_t * - * After calling this function, call @ref sqfs_data_writer_append repeatedly to - * add data to the file. Finally call @ref sqfs_data_writer_end_file when you - * are done. After writing all files, use @ref sqfs_data_writer_finish to wait - * until all blocks that are still in flight are done and written to disk. + * After calling this function, call @ref sqfs_block_processor_append + * repeatedly to add data to the file. Finally + * call @ref sqfs_block_processor_end_file when you + * are done. After writing all files, use @ref sqfs_block_processor_finish to + * wait until all blocks that are still in flight are done and written to disk. * * The specified inode pointer is kept internally and updated with the * compressed block sizes and final destinations of the file and possible * fragment. You need to make sure it has enough backing-store for all blocks * to come. Furthermore, since there can still be blocks in-flight even after - * calling @ref sqfs_data_writer_end_file, the data in the inode may still + * calling @ref sqfs_block_processor_end_file, the data in the inode may still * change. The only point at which the data writer is guarnteed to not touch - * them anymore is after @ref sqfs_data_writer_finish has returned. + * them anymore is after @ref sqfs_block_processor_finish has returned. * * @param proc A pointer to a data writer object. * @param inode The regular file inode representing the file. The data writer @@ -216,16 +218,16 @@ SQFS_API void sqfs_data_writer_destroy(sqfs_data_writer_t *proc); * * @return Zero on success, an @ref E_SQFS_ERROR value on failure. */ -SQFS_API int sqfs_data_writer_begin_file(sqfs_data_writer_t *proc, - sqfs_inode_generic_t *inode, - sqfs_u32 flags); +SQFS_API int sqfs_block_processor_begin_file(sqfs_block_processor_t *proc, + sqfs_inode_generic_t *inode, + sqfs_u32 flags); /** * @brief Append data to the current file. * - * @memberof sqfs_data_writer_t + * @memberof sqfs_block_processor_t * - * Call this after @ref sqfs_data_writer_begin_file to add data to a file. + * Call this after @ref sqfs_block_processor_begin_file to add data to a file. * * @param proc A pointer to a data writer object. * @param data A pointer to a buffer to read data from. @@ -234,32 +236,32 @@ SQFS_API int sqfs_data_writer_begin_file(sqfs_data_writer_t *proc, * * @return Zero on success, an @ref E_SQFS_ERROR value on failure. */ -SQFS_API int sqfs_data_writer_append(sqfs_data_writer_t *proc, - const void *data, size_t size); +SQFS_API int sqfs_block_processor_append(sqfs_block_processor_t *proc, + const void *data, size_t size); /** * @brief Stop writing the current file and flush everything that is * buffered internally. * - * @memberof sqfs_data_writer_t + * @memberof sqfs_block_processor_t * - * The counter part to @ref sqfs_data_writer_begin_file. + * The counter part to @ref sqfs_block_processor_begin_file. * * Even after calling this, there might still be data blocks in-flight. - * Use @ref sqfs_data_writer_finish when you are done writing files to force + * Use @ref sqfs_block_processor_finish when you are done writing files to force * the remaining blocks to be processed and written to disk. * * @param proc A pointer to a data writer object. * * @return Zero on success, an @ref E_SQFS_ERROR value on failure. */ -SQFS_API int sqfs_data_writer_end_file(sqfs_data_writer_t *proc); +SQFS_API int sqfs_block_processor_end_file(sqfs_block_processor_t *proc); /** * @brief Wait for the in-flight data blocks to finish and finally flush the * current fragment block. * - * @memberof sqfs_data_writer_t + * @memberof sqfs_block_processor_t * * @param proc A pointer to a block processor object. * @@ -267,12 +269,12 @@ SQFS_API int sqfs_data_writer_end_file(sqfs_data_writer_t *proc); * return value can either be an error encountered during enqueueing, * processing or writing to disk. */ -SQFS_API int sqfs_data_writer_finish(sqfs_data_writer_t *proc); +SQFS_API int sqfs_block_processor_finish(sqfs_block_processor_t *proc); /** * @brief Write the completed fragment table to disk. * - * @memberof sqfs_data_writer_t + * @memberof sqfs_block_processor_t * * Call this after producing the inode and directory table to generate * the fragment table for the squashfs image. @@ -284,13 +286,13 @@ SQFS_API int sqfs_data_writer_finish(sqfs_data_writer_t *proc); * @return Zero on success, an @ref E_SQFS_ERROR value on failure. */ SQFS_API -int sqfs_data_writer_write_fragment_table(sqfs_data_writer_t *proc, - sqfs_super_t *super); +int sqfs_block_processor_write_fragment_table(sqfs_block_processor_t *proc, + sqfs_super_t *super); /** * @brief Register a set of hooks to be invoked when writing blocks to disk. * - * @memberof sqfs_data_writer_t + * @memberof sqfs_block_processor_t * * @param proc A pointer to a data writer object. * @param user_ptr A user pointer to pass to the callbacks. @@ -300,11 +302,11 @@ int sqfs_data_writer_write_fragment_table(sqfs_data_writer_t *proc, * the hooks doesn't match any size knwon to the library. */ SQFS_API -int sqfs_data_writer_set_hooks(sqfs_data_writer_t *proc, void *user_ptr, - const sqfs_block_hooks_t *hooks); +int sqfs_block_processor_set_hooks(sqfs_block_processor_t *proc, void *user_ptr, + const sqfs_block_hooks_t *hooks); #ifdef __cplusplus } #endif -#endif /* SFQS_DATA_WRITER_H */ +#endif /* SFQS_BLOCK_PROCESSOR_H */ diff --git a/include/sqfs/predef.h b/include/sqfs/predef.h index 234b015..924aecc 100644 --- a/include/sqfs/predef.h +++ b/include/sqfs/predef.h @@ -68,7 +68,7 @@ typedef int32_t sqfs_s32; typedef int64_t sqfs_s64; typedef struct sqfs_block_t sqfs_block_t; -typedef struct sqfs_data_writer_t sqfs_data_writer_t; +typedef struct sqfs_block_processor_t sqfs_block_processor_t; typedef struct sqfs_compressor_config_t sqfs_compressor_config_t; typedef struct sqfs_compressor_t sqfs_compressor_t; typedef struct sqfs_dir_writer_t sqfs_dir_writer_t; diff --git a/lib/common/data_writer.c b/lib/common/data_writer.c index c5beba8..8ebd868 100644 --- a/lib/common/data_writer.c +++ b/lib/common/data_writer.c @@ -8,7 +8,7 @@ static sqfs_u8 buffer[4096]; -int write_data_from_file(const char *filename, sqfs_data_writer_t *data, +int write_data_from_file(const char *filename, sqfs_block_processor_t *data, sqfs_inode_generic_t *inode, sqfs_file_t *file, int flags) { @@ -16,7 +16,7 @@ int write_data_from_file(const char *filename, sqfs_data_writer_t *data, size_t diff; int ret; - ret = sqfs_data_writer_begin_file(data, inode, flags); + ret = sqfs_block_processor_begin_file(data, inode, flags); if (ret) { sqfs_perror(filename, "beginning file data blocks", ret); return -1; @@ -37,14 +37,14 @@ int write_data_from_file(const char *filename, sqfs_data_writer_t *data, return -1; } - ret = sqfs_data_writer_append(data, buffer, diff); + ret = sqfs_block_processor_append(data, buffer, diff); if (ret) { sqfs_perror(filename, "packing file data", ret); return -1; } } - ret = sqfs_data_writer_end_file(data); + ret = sqfs_block_processor_end_file(data); if (ret) { sqfs_perror(filename, "finishing file data", ret); return -1; diff --git a/lib/common/statistics.c b/lib/common/statistics.c index 7bf8fca..b41cd22 100644 --- a/lib/common/statistics.c +++ b/lib/common/statistics.c @@ -11,7 +11,7 @@ static void post_block_write(void *user, const sqfs_block_t *block, sqfs_file_t *file) { - data_writer_stats_t *stats = user; + block_processor_stats_t *stats = user; (void)file; if (block->size == 0) @@ -28,7 +28,7 @@ static void post_block_write(void *user, const sqfs_block_t *block, static void pre_fragment_store(void *user, sqfs_block_t *block) { - data_writer_stats_t *stats = user; + block_processor_stats_t *stats = user; (void)block; stats->frag_count += 1; @@ -36,7 +36,7 @@ static void pre_fragment_store(void *user, sqfs_block_t *block) static void notify_blocks_erased(void *user, size_t count, sqfs_u64 bytes) { - data_writer_stats_t *stats = user; + block_processor_stats_t *stats = user; stats->bytes_written -= bytes; stats->blocks_written -= count; @@ -45,7 +45,7 @@ static void notify_blocks_erased(void *user, size_t count, sqfs_u64 bytes) static void notify_fragment_discard(void *user, const sqfs_block_t *block) { - data_writer_stats_t *stats = user; + block_processor_stats_t *stats = user; (void)block; stats->frag_dup += 1; @@ -59,12 +59,13 @@ static const sqfs_block_hooks_t hooks = { .notify_fragment_discard = notify_fragment_discard, }; -void register_stat_hooks(sqfs_data_writer_t *data, data_writer_stats_t *stats) +void register_stat_hooks(sqfs_block_processor_t *data, + block_processor_stats_t *stats) { - sqfs_data_writer_set_hooks(data, stats, &hooks); + sqfs_block_processor_set_hooks(data, stats, &hooks); } -void sqfs_print_statistics(sqfs_super_t *super, data_writer_stats_t *stats) +void sqfs_print_statistics(sqfs_super_t *super, block_processor_stats_t *stats) { size_t ratio; diff --git a/lib/common/writer.c b/lib/common/writer.c index b6adc59..ed3ebbd 100644 --- a/lib/common/writer.c +++ b/lib/common/writer.c @@ -123,11 +123,11 @@ int sqfs_writer_init(sqfs_writer_t *sqfs, const sqfs_writer_cfg_t *wrcfg) if (ret > 0) sqfs->super.flags |= SQFS_FLAG_COMPRESSOR_OPTIONS; - sqfs->data = sqfs_data_writer_create(sqfs->super.block_size, - sqfs->cmp, wrcfg->num_jobs, - wrcfg->max_backlog, - wrcfg->devblksize, - sqfs->outfile); + sqfs->data = sqfs_block_processor_create(sqfs->super.block_size, + sqfs->cmp, wrcfg->num_jobs, + wrcfg->max_backlog, + wrcfg->devblksize, + sqfs->outfile); if (sqfs->data == NULL) { perror("creating data block processor"); goto fail_cmp; @@ -187,7 +187,7 @@ fail_xwr: fail_id: sqfs_id_table_destroy(sqfs->idtbl); fail_data: - sqfs_data_writer_destroy(sqfs->data); + sqfs_block_processor_destroy(sqfs->data); fail_cmp: sqfs->cmp->destroy(sqfs->cmp); fail_fs: @@ -204,7 +204,7 @@ int sqfs_writer_finish(sqfs_writer_t *sqfs, const sqfs_writer_cfg_t *cfg) if (!cfg->quiet) fputs("Waiting for remaining data blocks...\n", stdout); - ret = sqfs_data_writer_finish(sqfs->data); + ret = sqfs_block_processor_finish(sqfs->data); if (ret) { sqfs_perror(cfg->filename, "finishing data blocks", ret); return -1; @@ -221,7 +221,8 @@ int sqfs_writer_finish(sqfs_writer_t *sqfs, const sqfs_writer_cfg_t *cfg) if (!cfg->quiet) fputs("Writing fragment table...\n", stdout); - ret = sqfs_data_writer_write_fragment_table(sqfs->data, &sqfs->super); + ret = sqfs_block_processor_write_fragment_table(sqfs->data, + &sqfs->super); if (ret) { sqfs_perror(cfg->filename, "writing fragment table", ret); return -1; @@ -291,7 +292,7 @@ void sqfs_writer_cleanup(sqfs_writer_t *sqfs) sqfs_meta_writer_destroy(sqfs->dm); sqfs_meta_writer_destroy(sqfs->im); sqfs_id_table_destroy(sqfs->idtbl); - sqfs_data_writer_destroy(sqfs->data); + sqfs_block_processor_destroy(sqfs->data); sqfs->cmp->destroy(sqfs->cmp); fstree_cleanup(&sqfs->fs); sqfs->outfile->destroy(sqfs->outfile); diff --git a/lib/sqfs/Makemodule.am b/lib/sqfs/Makemodule.am index 47b9ad7..cde947d 100644 --- a/lib/sqfs/Makemodule.am +++ b/lib/sqfs/Makemodule.am @@ -1,6 +1,6 @@ LIBSQFS_HEARDS = include/sqfs/meta_writer.h \ include/sqfs/meta_reader.h include/sqfs/id_table.h \ - include/sqfs/compressor.h include/sqfs/data_writer.h \ + include/sqfs/compressor.h include/sqfs/block_processor.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 \ @@ -19,11 +19,12 @@ 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/comp/internal.h lib/sqfs/xattr_writer.c libsquashfs_la_SOURCES += lib/sqfs/dir_reader.c lib/sqfs/read_tree.c -libsquashfs_la_SOURCES += lib/sqfs/inode.c lib/sqfs/data_writer/fragment.c -libsquashfs_la_SOURCES += lib/sqfs/write_super.c lib/sqfs/data_writer/block.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_SOURCES += lib/sqfs/data_writer/fileapi.c +libsquashfs_la_SOURCES += lib/sqfs/inode.c lib/sqfs/block_processor/fragment.c +libsquashfs_la_SOURCES += lib/sqfs/write_super.c lib/sqfs/data_reader.c +libsquashfs_la_SOURCES += lib/sqfs/block_processor/block.c +libsquashfs_la_SOURCES += lib/sqfs/block_processor/internal.h +libsquashfs_la_SOURCES += lib/sqfs/block_processor/common.c +libsquashfs_la_SOURCES += lib/sqfs/block_processor/fileapi.c libsquashfs_la_SOURCES += lib/sqfs/str_table.c lib/sqfs/str_table.h libsquashfs_la_SOURCES += lib/sqfs/alloc.c lib/sqfs/util.h libsquashfs_la_SOURCES += lib/sqfs/frag_table.c include/sqfs/frag_table.h @@ -45,13 +46,13 @@ libsquashfs_la_SOURCES += lib/sqfs/unix/io_file.c endif if HAVE_PTHREAD -libsquashfs_la_SOURCES += lib/sqfs/data_writer/winpthread.c +libsquashfs_la_SOURCES += lib/sqfs/block_processor/winpthread.c libsquashfs_la_CPPFLAGS += -DWITH_PTHREAD else if WINDOWS -libsquashfs_la_SOURCES += lib/sqfs/data_writer/winpthread.c +libsquashfs_la_SOURCES += lib/sqfs/block_processor/winpthread.c else -libsquashfs_la_SOURCES += lib/sqfs/data_writer/serial.c +libsquashfs_la_SOURCES += lib/sqfs/block_processor/serial.c endif endif diff --git a/lib/sqfs/data_writer/block.c b/lib/sqfs/block_processor/block.c index b45b1ff..49892be 100644 --- a/lib/sqfs/data_writer/block.c +++ b/lib/sqfs/block_processor/block.c @@ -9,7 +9,7 @@ #include <string.h> -static int store_block_location(sqfs_data_writer_t *proc, sqfs_u64 offset, +static int store_block_location(sqfs_block_processor_t *proc, sqfs_u64 offset, sqfs_u32 size, sqfs_u32 chksum) { size_t new_sz; @@ -32,7 +32,7 @@ static int store_block_location(sqfs_data_writer_t *proc, sqfs_u64 offset, return 0; } -static size_t deduplicate_blocks(sqfs_data_writer_t *proc, size_t count) +static size_t deduplicate_blocks(sqfs_block_processor_t *proc, size_t count) { size_t i, j; @@ -50,7 +50,7 @@ static size_t deduplicate_blocks(sqfs_data_writer_t *proc, size_t count) return i; } -static int align_file(sqfs_data_writer_t *proc, sqfs_block_t *blk) +static int align_file(sqfs_block_processor_t *proc, sqfs_block_t *blk) { sqfs_u32 chksum; void *padding; @@ -83,7 +83,7 @@ static int align_file(sqfs_data_writer_t *proc, sqfs_block_t *blk) return store_block_location(proc, size, diff | (1 << 24), chksum); } -int process_completed_block(sqfs_data_writer_t *proc, sqfs_block_t *blk) +int process_completed_block(sqfs_block_processor_t *proc, sqfs_block_t *blk) { sqfs_u64 offset, bytes; size_t start, count; @@ -171,8 +171,8 @@ int process_completed_block(sqfs_data_writer_t *proc, sqfs_block_t *blk) return 0; } -int data_writer_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp, - sqfs_u8 *scratch, size_t scratch_size) +int block_processor_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp, + sqfs_u8 *scratch, size_t scratch_size) { ssize_t ret; diff --git a/lib/sqfs/data_writer/common.c b/lib/sqfs/block_processor/common.c index b207291..c6375dd 100644 --- a/lib/sqfs/data_writer/common.c +++ b/lib/sqfs/block_processor/common.c @@ -18,9 +18,9 @@ void free_blk_list(sqfs_block_t *list) } } -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) +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) { proc->max_block_size = max_block_size; proc->num_workers = num_workers; @@ -41,7 +41,7 @@ int data_writer_init(sqfs_data_writer_t *proc, size_t max_block_size, return 0; } -void data_writer_cleanup(sqfs_data_writer_t *proc) +void block_processor_cleanup(sqfs_block_processor_t *proc) { if (proc->frag_tbl != NULL) sqfs_frag_table_destroy(proc->frag_tbl); @@ -53,15 +53,15 @@ void data_writer_cleanup(sqfs_data_writer_t *proc) free(proc); } -int sqfs_data_writer_write_fragment_table(sqfs_data_writer_t *proc, - sqfs_super_t *super) +int sqfs_block_processor_write_fragment_table(sqfs_block_processor_t *proc, + sqfs_super_t *super) { return sqfs_frag_table_write(proc->frag_tbl, proc->file, super, proc->cmp); } -int sqfs_data_writer_set_hooks(sqfs_data_writer_t *proc, void *user_ptr, - const sqfs_block_hooks_t *hooks) +int sqfs_block_processor_set_hooks(sqfs_block_processor_t *proc, void *user_ptr, + const sqfs_block_hooks_t *hooks) { if (hooks->size != sizeof(*hooks)) return SQFS_ERROR_UNSUPPORTED; diff --git a/lib/sqfs/data_writer/fileapi.c b/lib/sqfs/block_processor/fileapi.c index 89bac0b..9e59c1d 100644 --- a/lib/sqfs/data_writer/fileapi.c +++ b/lib/sqfs/block_processor/fileapi.c @@ -12,7 +12,7 @@ static bool is_zero_block(unsigned char *ptr, size_t size) return ptr[0] == 0 && memcmp(ptr, ptr + 1, size - 1) == 0; } -static int enqueue_block(sqfs_data_writer_t *proc, sqfs_block_t *block) +static int enqueue_block(sqfs_block_processor_t *proc, sqfs_block_t *block) { int status; @@ -28,7 +28,7 @@ static int enqueue_block(sqfs_data_writer_t *proc, sqfs_block_t *block) return append_to_work_queue(proc, block, proc->notify_threads); } -static int add_sentinel_block(sqfs_data_writer_t *proc) +static int add_sentinel_block(sqfs_block_processor_t *proc) { sqfs_block_t *blk = calloc(1, sizeof(*blk)); @@ -41,8 +41,8 @@ static int add_sentinel_block(sqfs_data_writer_t *proc) return enqueue_block(proc, blk); } -int sqfs_data_writer_begin_file(sqfs_data_writer_t *proc, - sqfs_inode_generic_t *inode, sqfs_u32 flags) +int sqfs_block_processor_begin_file(sqfs_block_processor_t *proc, + sqfs_inode_generic_t *inode, sqfs_u32 flags) { if (proc->inode != NULL) return test_and_set_status(proc, SQFS_ERROR_INTERNAL); @@ -57,7 +57,7 @@ int sqfs_data_writer_begin_file(sqfs_data_writer_t *proc, return 0; } -static int flush_block(sqfs_data_writer_t *proc, sqfs_block_t *block) +static int flush_block(sqfs_block_processor_t *proc, sqfs_block_t *block) { block->index = proc->blk_index++; block->flags = proc->blk_flags; @@ -83,8 +83,8 @@ static int flush_block(sqfs_data_writer_t *proc, sqfs_block_t *block) return enqueue_block(proc, block); } -int sqfs_data_writer_append(sqfs_data_writer_t *proc, const void *data, - size_t size) +int sqfs_block_processor_append(sqfs_block_processor_t *proc, const void *data, + size_t size) { size_t diff; void *new; @@ -133,7 +133,7 @@ int sqfs_data_writer_append(sqfs_data_writer_t *proc, const void *data, return 0; } -int sqfs_data_writer_end_file(sqfs_data_writer_t *proc) +int sqfs_block_processor_end_file(sqfs_block_processor_t *proc) { int err; @@ -162,7 +162,7 @@ int sqfs_data_writer_end_file(sqfs_data_writer_t *proc) return 0; } -int sqfs_data_writer_finish(sqfs_data_writer_t *proc) +int sqfs_block_processor_finish(sqfs_block_processor_t *proc) { int status = 0; diff --git a/lib/sqfs/data_writer/fragment.c b/lib/sqfs/block_processor/fragment.c index 9862c89..3701b3c 100644 --- a/lib/sqfs/data_writer/fragment.c +++ b/lib/sqfs/block_processor/fragment.c @@ -7,7 +7,7 @@ #define SQFS_BUILDING_DLL #include "internal.h" -int process_completed_fragment(sqfs_data_writer_t *proc, sqfs_block_t *frag, +int process_completed_fragment(sqfs_block_processor_t *proc, sqfs_block_t *frag, sqfs_block_t **blk_out) { sqfs_u32 index, offset; diff --git a/lib/sqfs/data_writer/internal.h b/lib/sqfs/block_processor/internal.h index 8f59fb7..40871b9 100644 --- a/lib/sqfs/data_writer/internal.h +++ b/lib/sqfs/block_processor/internal.h @@ -9,7 +9,7 @@ #include "config.h" -#include "sqfs/data_writer.h" +#include "sqfs/block_processor.h" #include "sqfs/frag_table.h" #include "sqfs/compressor.h" #include "sqfs/inode.h" @@ -46,7 +46,7 @@ typedef struct { typedef struct compress_worker_t compress_worker_t; -struct sqfs_data_writer_t { +struct sqfs_block_processor_t { /* synchronization primitives */ #ifdef WITH_PTHREAD pthread_mutex_t mtx; @@ -108,33 +108,34 @@ struct sqfs_data_writer_t { #endif }; -SQFS_INTERNAL int process_completed_block(sqfs_data_writer_t *proc, +SQFS_INTERNAL int process_completed_block(sqfs_block_processor_t *proc, sqfs_block_t *block); SQFS_INTERNAL -int process_completed_fragment(sqfs_data_writer_t *proc, sqfs_block_t *frag, +int process_completed_fragment(sqfs_block_processor_t *proc, sqfs_block_t *frag, sqfs_block_t **blk_out); SQFS_INTERNAL void free_blk_list(sqfs_block_t *list); SQFS_INTERNAL -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); +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); -SQFS_INTERNAL void data_writer_cleanup(sqfs_data_writer_t *proc); +SQFS_INTERNAL void block_processor_cleanup(sqfs_block_processor_t *proc); SQFS_INTERNAL -int data_writer_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp, - sqfs_u8 *scratch, size_t scratch_size); +int block_processor_do_block(sqfs_block_t *block, sqfs_compressor_t *cmp, + sqfs_u8 *scratch, size_t scratch_size); SQFS_INTERNAL -int test_and_set_status(sqfs_data_writer_t *proc, int status); +int test_and_set_status(sqfs_block_processor_t *proc, int status); SQFS_INTERNAL -int append_to_work_queue(sqfs_data_writer_t *proc, sqfs_block_t *block, +int append_to_work_queue(sqfs_block_processor_t *proc, sqfs_block_t *block, bool notify_threads); -SQFS_INTERNAL int wait_completed(sqfs_data_writer_t *proc); +SQFS_INTERNAL int wait_completed(sqfs_block_processor_t *proc); #endif /* INTERNAL_H */ diff --git a/lib/sqfs/data_writer/serial.c b/lib/sqfs/block_processor/serial.c index 82f7836..eedb19c 100644 --- a/lib/sqfs/data_writer/serial.c +++ b/lib/sqfs/block_processor/serial.c @@ -7,35 +7,35 @@ #define SQFS_BUILDING_DLL #include "internal.h" -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 *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 *proc; + sqfs_block_processor_t *proc; proc = alloc_flex(sizeof(*proc), 1, max_block_size); if (proc == NULL) return NULL; - if (data_writer_init(proc, max_block_size, cmp, num_workers, - max_backlog, devblksz, file)) { - data_writer_cleanup(proc); + if (block_processor_init(proc, max_block_size, cmp, num_workers, + max_backlog, devblksz, file)) { + block_processor_cleanup(proc); return NULL; } return proc; } -void sqfs_data_writer_destroy(sqfs_data_writer_t *proc) +void sqfs_block_processor_destroy(sqfs_block_processor_t *proc) { - data_writer_cleanup(proc); + block_processor_cleanup(proc); } -int test_and_set_status(sqfs_data_writer_t *proc, int status) +int test_and_set_status(sqfs_block_processor_t *proc, int status) { if (proc->status == 0) proc->status = status; @@ -43,7 +43,7 @@ int test_and_set_status(sqfs_data_writer_t *proc, int status) return proc->status; } -int append_to_work_queue(sqfs_data_writer_t *proc, sqfs_block_t *block, +int append_to_work_queue(sqfs_block_processor_t *proc, sqfs_block_t *block, bool signal_threads) { sqfs_block_t *fragblk = NULL; @@ -72,8 +72,8 @@ int append_to_work_queue(sqfs_data_writer_t *proc, sqfs_block_t *block, block = fragblk; } - proc->status = data_writer_do_block(block, proc->cmp, proc->scratch, - proc->max_block_size); + proc->status = block_processor_do_block(block, proc->cmp, proc->scratch, + proc->max_block_size); if (proc->status == 0) proc->status = process_completed_block(proc, block); @@ -82,7 +82,7 @@ int append_to_work_queue(sqfs_data_writer_t *proc, sqfs_block_t *block, return proc->status; } -int wait_completed(sqfs_data_writer_t *proc) +int wait_completed(sqfs_block_processor_t *proc) { return proc->status; } diff --git a/lib/sqfs/data_writer/winpthread.c b/lib/sqfs/block_processor/winpthread.c index e575859..b16a17c 100644 --- a/lib/sqfs/data_writer/winpthread.c +++ b/lib/sqfs/block_processor/winpthread.c @@ -28,7 +28,7 @@ #endif struct compress_worker_t { - sqfs_data_writer_t *shared; + sqfs_block_processor_t *shared; sqfs_compressor_t *cmp; THREAD_HANDLE thread; sqfs_u8 scratch[]; @@ -37,7 +37,7 @@ struct compress_worker_t { static THREAD_TYPE worker_proc(THREAD_ARG arg) { compress_worker_t *worker = arg; - sqfs_data_writer_t *shared = worker->shared; + sqfs_block_processor_t *shared = worker->shared; sqfs_block_t *it, *prev, *blk = NULL; int status = 0; @@ -85,23 +85,23 @@ static THREAD_TYPE worker_proc(THREAD_ARG arg) if (blk == NULL) break; - status = data_writer_do_block(blk, worker->cmp, - worker->scratch, - shared->max_block_size); + status = block_processor_do_block(blk, worker->cmp, + worker->scratch, + shared->max_block_size); } return THREAD_EXIT_SUCCESS; } #if defined(_WIN32) || defined(__WINDOWS__) -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 *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 *proc; + sqfs_block_processor_t *proc; unsigned int i; if (num_workers < 1) @@ -116,8 +116,8 @@ sqfs_data_writer_t *sqfs_data_writer_create(size_t max_block_size, InitializeConditionVariable(&proc->queue_cond); InitializeConditionVariable(&proc->done_cond); - if (data_writer_init(proc, max_block_size, cmp, num_workers, - max_backlog, devblksz, file)) { + if (block_processor_init(proc, max_block_size, cmp, num_workers, + max_backlog, devblksz, file)) { goto fail; } @@ -142,11 +142,11 @@ sqfs_data_writer_t *sqfs_data_writer_create(size_t max_block_size, return proc; fail: - sqfs_data_writer_destroy(proc); + sqfs_block_processor_destroy(proc); return NULL; } -void sqfs_data_writer_destroy(sqfs_data_writer_t *proc) +void sqfs_block_processor_destroy(sqfs_block_processor_t *proc) { unsigned int i; @@ -171,17 +171,17 @@ void sqfs_data_writer_destroy(sqfs_data_writer_t *proc) } DeleteCriticalSection(&proc->mtx); - data_writer_cleanup(proc); + block_processor_cleanup(proc); } #else -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 *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 *proc; + sqfs_block_processor_t *proc; sigset_t set, oldset; unsigned int i; int ret; @@ -198,8 +198,8 @@ sqfs_data_writer_t *sqfs_data_writer_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 (data_writer_init(proc, max_block_size, cmp, num_workers, - max_backlog, devblksz, file)) { + if (block_processor_init(proc, max_block_size, cmp, num_workers, + max_backlog, devblksz, file)) { goto fail_init; } @@ -257,11 +257,11 @@ fail_init: pthread_cond_destroy(&proc->done_cond); pthread_cond_destroy(&proc->queue_cond); pthread_mutex_destroy(&proc->mtx); - data_writer_cleanup(proc); + block_processor_cleanup(proc); return NULL; } -void sqfs_data_writer_destroy(sqfs_data_writer_t *proc) +void sqfs_block_processor_destroy(sqfs_block_processor_t *proc) { unsigned int i; @@ -281,11 +281,11 @@ void sqfs_data_writer_destroy(sqfs_data_writer_t *proc) pthread_cond_destroy(&proc->queue_cond); pthread_mutex_destroy(&proc->mtx); - data_writer_cleanup(proc); + block_processor_cleanup(proc); } #endif -int append_to_work_queue(sqfs_data_writer_t *proc, sqfs_block_t *block, +int append_to_work_queue(sqfs_block_processor_t *proc, sqfs_block_t *block, bool signal_threads) { int status; @@ -317,7 +317,7 @@ out: return 0; } -static sqfs_block_t *try_dequeue(sqfs_data_writer_t *proc) +static sqfs_block_t *try_dequeue(sqfs_block_processor_t *proc) { sqfs_block_t *queue, *it, *prev; @@ -363,7 +363,7 @@ static sqfs_block_t *queue_merge(sqfs_block_t *lhs, sqfs_block_t *rhs) return head; } -static int process_done_queue(sqfs_data_writer_t *proc, sqfs_block_t *queue) +static int process_done_queue(sqfs_block_processor_t *proc, sqfs_block_t *queue) { sqfs_block_t *it, *block = NULL; int status = 0; @@ -410,7 +410,7 @@ static int process_done_queue(sqfs_data_writer_t *proc, sqfs_block_t *queue) return status; } -int test_and_set_status(sqfs_data_writer_t *proc, int status) +int test_and_set_status(sqfs_block_processor_t *proc, int status) { LOCK(&proc->mtx); if (proc->status == 0) { @@ -423,7 +423,7 @@ int test_and_set_status(sqfs_data_writer_t *proc, int status) return status; } -int wait_completed(sqfs_data_writer_t *proc) +int wait_completed(sqfs_block_processor_t *proc) { sqfs_block_t *queue; int status; diff --git a/mkfs/mkfs.c b/mkfs/mkfs.c index b5d3443..bccbd79 100644 --- a/mkfs/mkfs.c +++ b/mkfs/mkfs.c @@ -39,8 +39,8 @@ static int set_working_dir(options_t *opt) return 0; } -static int pack_files(sqfs_data_writer_t *data, fstree_t *fs, - data_writer_stats_t *stats, options_t *opt) +static int pack_files(sqfs_block_processor_t *data, fstree_t *fs, + block_processor_stats_t *stats, options_t *opt) { sqfs_inode_generic_t *inode; size_t max_blk_count; |