So, after asking questions about the default multithread mode
of xz 5.6.0 and determinism, it turned out that there
is a common misconception about determinism in xz.

XZ compression varies between the two compressors. Ie, the single
thread and multi thread variant. T0 always uses the multithread
one, even if used on one core. But T1 uses the singlethread
compressor.

This has caused a very common misconception about determinism
variability with number of threads. I've seen this discussion
on a lot of places. So albeit true, it only applies to the
distinct compressors, not how many threads are used in
multithread mode.

Now after giving this some thought I've decided to reenable
threaded XZ, using T0. T0 should produce the same results always,
on any target. Even unicore machines. And with the multithread
compressor now being the default, users should end up with the
same results unless they are actively using T1.

Signed-off-by: Christian Melki <christian.me...@t2data.com>
---
 platforms/image-root-cpio.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/platforms/image-root-cpio.in b/platforms/image-root-cpio.in
index 0338175a0..546dda7fb 100644
--- a/platforms/image-root-cpio.in
+++ b/platforms/image-root-cpio.in
@@ -84,7 +84,7 @@ config IMAGE_ROOT_CPIO_COMPRESSION_UTIL
        default ""                      if IMAGE_ROOT_CPIO_COMPRESSION_MODE_NONE
        default "gzip"                  if IMAGE_ROOT_CPIO_COMPRESSION_MODE_GZ
        default "zstd -T0 -19"          if IMAGE_ROOT_CPIO_COMPRESSION_MODE_ZSTD
-       default "xz --check=crc32"      if IMAGE_ROOT_CPIO_COMPRESSION_MODE_XZ
+       default "xz -T0 --check=crc32"  if IMAGE_ROOT_CPIO_COMPRESSION_MODE_XZ
        default "lzop"                  if IMAGE_ROOT_CPIO_COMPRESSION_MODE_LZOP
 
 endif
-- 
2.34.1


Reply via email to