From 8c19216baccb92d011694590df8a1262da2e980c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 9 Jun 2014 21:21:24 +0300 Subject: [PATCH] xz: Force single-threaded mode when --flush-timeout is used. --- src/xz/coder.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/xz/coder.c b/src/xz/coder.c index 027d7d2f..9accecad 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -195,6 +195,17 @@ coder_set_compression_settings(void) // Print the selected filter chain. message_filters_show(V_DEBUG, filters); + // Disable encoder threads when --flush-timeout is used because + // the threaded encoder doesn't support LZMA_SYNC_FLUSH. + // FIXME: When LZMA_SYNC_FLUSH is supported, this should be changed. + if (opt_mode == MODE_COMPRESS && opt_flush_timeout != 0 + && hardware_threads_get() > 1) { + message(V_WARNING, _("Switching to single-threaded mode " + "due to --flush-timeout=%" PRIu64), + opt_flush_timeout); + hardware_threads_set(1); + } + // Get the memory usage. Note that if --format=raw was used, // we can be decompressing. const uint64_t memory_limit = hardware_memlimit_get(opt_mode);