diff options
Diffstat (limited to 'pkgs/tools/filesystems/squashfs/0003-remove-frag-deflator-thread.patch')
-rw-r--r-- | pkgs/tools/filesystems/squashfs/0003-remove-frag-deflator-thread.patch | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/pkgs/tools/filesystems/squashfs/0003-remove-frag-deflator-thread.patch b/pkgs/tools/filesystems/squashfs/0003-remove-frag-deflator-thread.patch deleted file mode 100644 index 4be4b96369a8..000000000000 --- a/pkgs/tools/filesystems/squashfs/0003-remove-frag-deflator-thread.patch +++ /dev/null @@ -1,220 +0,0 @@ -From afc0c76a170bd17cbd29bbec6ae6d2227e398570 Mon Sep 17 00:00:00 2001 -From: Alexander Couzens <lynxis@fe80.eu> -Date: Fri, 13 Jan 2017 22:00:37 +0100 -Subject: [PATCH] remove frag_deflator_thread - -frag_deflator_thread compress fragments. -Replace the deflator_thread with a function and -use the function instead of the to_frag queue. ---- - squashfs-tools/info.c | 5 --- - squashfs-tools/mksquashfs.c | 76 +++++++++++++------------------------ - squashfs-tools/mksquashfs.h | 2 +- - squashfs-tools/restore.c | 15 +------- - 4 files changed, 30 insertions(+), 68 deletions(-) - -diff --git a/squashfs-tools/info.c b/squashfs-tools/info.c -index 7968c77..028d578 100644 ---- a/squashfs-tools/info.c -+++ b/squashfs-tools/info.c -@@ -96,11 +96,6 @@ void dump_state() - printf("compressed block queue (deflate thread(s) -> main thread)\n"); - dump_seq_queue(to_main, 0); - -- printf("uncompressed packed fragment queue (main thread -> fragment" -- " deflate thread(s))\n"); -- dump_queue(to_frag); -- -- - printf("locked frag queue (compressed frags waiting while multi-block" - " file is written)\n"); - dump_queue(locked_fragment); -diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c -index cf48e40..cacf14c 100644 ---- a/squashfs-tools/mksquashfs.c -+++ b/squashfs-tools/mksquashfs.c -@@ -270,10 +270,10 @@ unsigned int sid_count = 0, suid_count = 0, sguid_count = 0; - struct cache *reader_buffer, *fragment_buffer, *reserve_cache; - struct cache *bwriter_buffer, *fwriter_buffer; - struct queue *to_reader, *to_deflate, *to_writer, *from_writer, -- *to_frag, *locked_fragment, *to_process_frag; -+ *locked_fragment, *to_process_frag; - struct seq_queue *to_main; - pthread_t reader_thread, writer_thread, main_thread; --pthread_t *deflator_thread, *frag_deflator_thread, *frag_thread; -+pthread_t *deflator_thread, *frag_thread; - pthread_t *restore_thread = NULL; - pthread_mutex_t fragment_mutex = PTHREAD_MUTEX_INITIALIZER; - pthread_mutex_t pos_mutex = PTHREAD_MUTEX_INITIALIZER; -@@ -323,7 +323,7 @@ struct dir_info *scan1_opendir(char *pathname, char *subpath, int depth); - void write_filesystem_tables(struct squashfs_super_block *sBlk, int nopad); - unsigned short get_checksum_mem(char *buff, int bytes); - void check_usable_phys_mem(int total_mem); -- -+void frag_deflator(struct file_buffer *file_buffer); - - void prep_exit() - { -@@ -1540,7 +1540,7 @@ void write_fragment(struct file_buffer *fragment) - pthread_mutex_lock(&fragment_mutex); - fragment_table[fragment->block].unused = 0; - fragments_outstanding ++; -- queue_put(to_frag, fragment); -+ frag_deflator(fragment); - pthread_cleanup_pop(1); - } - -@@ -2412,51 +2412,34 @@ void *deflator(void *arg) - } - - --void *frag_deflator(void *arg) -+void frag_deflator(struct file_buffer *file_buffer) - { -- void *stream = NULL; -- int res; - -- res = compressor_init(comp, &stream, block_size, 1); -- if(res) -- BAD_ERROR("frag_deflator:: compressor_init failed\n"); -- -- pthread_cleanup_push((void *) pthread_mutex_unlock, &fragment_mutex); -- -- while(1) { -- int c_byte, compressed_size; -- struct file_buffer *file_buffer = queue_get(to_frag); -- struct file_buffer *write_buffer = -+ int c_byte, compressed_size; -+ struct file_buffer *write_buffer = - cache_get(fwriter_buffer, file_buffer->block); - -- c_byte = mangle2(stream, write_buffer->data, file_buffer->data, -- file_buffer->size, block_size, noF, 1); -- compressed_size = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte); -- write_buffer->size = compressed_size; -- pthread_mutex_lock(&fragment_mutex); -- if(fragments_locked == FALSE) { -- fragment_table[file_buffer->block].size = c_byte; -- fragment_table[file_buffer->block].start_block = bytes; -- write_buffer->block = bytes; -- bytes += compressed_size; -- fragments_outstanding --; -- queue_put(to_writer, write_buffer); -- pthread_mutex_unlock(&fragment_mutex); -- TRACE("Writing fragment %lld, uncompressed size %d, " -- "compressed size %d\n", file_buffer->block, -- file_buffer->size, compressed_size); -- } else { -- add_pending_fragment(write_buffer, c_byte, -- file_buffer->block); -- pthread_mutex_unlock(&fragment_mutex); -- } -- cache_block_put(file_buffer); -+ c_byte = mangle2(stream, write_buffer->data, file_buffer->data, -+ file_buffer->size, block_size, noF, 1); -+ compressed_size = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte); -+ write_buffer->size = compressed_size; -+ if(fragments_locked == FALSE) { -+ fragment_table[file_buffer->block].size = c_byte; -+ fragment_table[file_buffer->block].start_block = bytes; -+ write_buffer->block = bytes; -+ bytes += compressed_size; -+ fragments_outstanding --; -+ queue_put(to_writer, write_buffer); -+ TRACE("Writing fragment %lld, uncompressed size %d, " -+ "compressed size %d\n", file_buffer->block, -+ file_buffer->size, compressed_size); -+ } else { -+ add_pending_fragment(write_buffer, c_byte, -+ file_buffer->block); - } -- -- pthread_cleanup_pop(0); -+ cache_block_put(file_buffer); - } - -- - struct file_buffer *get_file_buffer() - { - struct file_buffer *file_buffer = seq_queue_get(to_main); -@@ -4257,19 +4240,17 @@ void initialise_threads(int readq, int fragq, int bwriteq, int fwriteq, - multiply_overflow(processors * 3, sizeof(pthread_t))) - BAD_ERROR("Processors too large\n"); - -- deflator_thread = malloc(processors * 3 * sizeof(pthread_t)); -+ deflator_thread = malloc(processors * 2 * sizeof(pthread_t)); - if(deflator_thread == NULL) - MEM_ERROR(); - -- frag_deflator_thread = &deflator_thread[processors]; -- frag_thread = &frag_deflator_thread[processors]; -+ frag_thread = &deflator_thread[processors]; - - to_reader = queue_init(1); - to_deflate = queue_init(reader_size); - to_process_frag = queue_init(reader_size); - to_writer = queue_init(bwriter_size + fwriter_size); - from_writer = queue_init(1); -- to_frag = queue_init(fragment_size); - locked_fragment = queue_init(fragment_size); - to_main = seq_queue_init(); - reader_buffer = cache_init(block_size, reader_size, 0, 0); -@@ -4285,9 +4266,6 @@ void initialise_threads(int readq, int fragq, int bwriteq, int fwriteq, - for(i = 0; i < processors; i++) { - if(pthread_create(&deflator_thread[i], NULL, deflator, NULL)) - BAD_ERROR("Failed to create thread\n"); -- if(pthread_create(&frag_deflator_thread[i], NULL, frag_deflator, -- NULL) != 0) -- BAD_ERROR("Failed to create thread\n"); - if(pthread_create(&frag_thread[i], NULL, frag_thrd, - (void *) destination_file) != 0) - BAD_ERROR("Failed to create thread\n"); -diff --git a/squashfs-tools/mksquashfs.h b/squashfs-tools/mksquashfs.h -index 55708a3..dc5bde4 100644 ---- a/squashfs-tools/mksquashfs.h -+++ b/squashfs-tools/mksquashfs.h -@@ -135,7 +135,7 @@ struct append_file { - extern struct cache *reader_buffer, *fragment_buffer, *reserve_cache; - struct cache *bwriter_buffer, *fwriter_buffer; - extern struct queue *to_reader, *to_deflate, *to_writer, *from_writer, -- *to_frag, *locked_fragment, *to_process_frag; -+ *locked_fragment, *to_process_frag; - extern struct append_file **file_mapping; - extern struct seq_queue *to_main; - extern pthread_mutex_t fragment_mutex, dup_mutex; -diff --git a/squashfs-tools/restore.c b/squashfs-tools/restore.c -index 5e336b3..a7aaf2e 100644 ---- a/squashfs-tools/restore.c -+++ b/squashfs-tools/restore.c -@@ -47,8 +47,8 @@ - #define TRUE 1 - - extern pthread_t reader_thread, writer_thread, main_thread; --extern pthread_t *deflator_thread, *frag_deflator_thread, *frag_thread; --extern struct queue *to_deflate, *to_writer, *to_frag, *to_process_frag; -+extern pthread_t *deflator_thread, *frag_thread; -+extern struct queue *to_deflate, *to_writer, *to_process_frag; - extern struct seq_queue *to_main; - extern void restorefs(); - extern int processors; -@@ -120,17 +120,6 @@ void *restore_thrd(void *arg) - pthread_cancel(main_thread); - pthread_join(main_thread, NULL); - -- /* then flush the main thread to fragment deflator thread(s) -- * queue. The fragment deflator thread(s) will idle -- */ -- queue_flush(to_frag); -- -- /* now kill the fragment deflator thread(s) */ -- for(i = 0; i < processors; i++) -- pthread_cancel(frag_deflator_thread[i]); -- for(i = 0; i < processors; i++) -- pthread_join(frag_deflator_thread[i], NULL); -- - /* - * then flush the main thread/fragment deflator thread(s) - * to writer thread queue. The writer thread will idle --- -2.17.0 - |