diff --git a/programs/fileio.c b/programs/fileio.c index 14569bb4..5e3928ef 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -466,6 +466,13 @@ static cRess_t FIO_createCResources(const char* dictFileName, int cLevel, #ifdef ZSTD_MULTITHREAD DISPLAYLEVEL(5,"set nb workers = %u \n", g_nbWorkers); CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_p_nbWorkers, g_nbWorkers) ); + if ( (g_overlapLog == FIO_OVERLAP_LOG_NOTSET) + && (cLevel == ZSTD_maxCLevel()) ) + g_overlapLog = 9; /* full overlap */ + if (g_overlapLog != FIO_OVERLAP_LOG_NOTSET) { + DISPLAYLEVEL(3,"set overlapLog = %u \n", g_overlapLog); + CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_p_overlapSizeLog, g_overlapLog) ); + } #endif /* dictionary */ CHECK( ZSTD_CCtx_setPledgedSrcSize(ress.cctx, srcSize) ); /* set the value temporarily for dictionary loading, to adapt compression parameters */ diff --git a/tests/playTests.sh b/tests/playTests.sh index 41d8263b..49448022 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -650,6 +650,25 @@ then $ECHO "\n===> zstdmt long distance matching round-trip tests " roundTripTest -g8M "3 --long=24 -T2" + + $ECHO "\n===> ovLog tests " + ./datagen -g2MB > tmp + refSize=$($ZSTD tmp -6 -c --zstd=wlog=18 | wc -c) + ov9Size=$($ZSTD tmp -6 -c --zstd=wlog=18,ovlog=9 | wc -c) + ov0Size=$($ZSTD tmp -6 -c --zstd=wlog=18,ovlog=0 | wc -c) + if [ $refSize -eq $ov9Size ]; then + echo ov9Size should be different from refSize + exit 1 + fi + if [ $refSize -eq $ov0Size ]; then + echo ov0Size should be different from refSize + exit 1 + fi + if [ $ov9Size -ge $ov0Size ]; then + echo ov9Size=$ov9Size should be smaller than ov0Size=$ov0Size + exit 1 + fi + else $ECHO "\n===> no multithreading, skipping zstdmt tests " fi