[cli] Add rsyncable
This commit is contained in:
parent
b9693d3a49
commit
f9a671ac37
@ -307,6 +307,12 @@ void FIO_setAdaptiveMode(unsigned adapt) {
|
|||||||
EXM_THROW(1, "Adaptive mode is not compatible with single thread mode \n");
|
EXM_THROW(1, "Adaptive mode is not compatible with single thread mode \n");
|
||||||
g_adaptiveMode = adapt;
|
g_adaptiveMode = adapt;
|
||||||
}
|
}
|
||||||
|
static U32 g_rsyncable = 0;
|
||||||
|
void FIO_setRsyncable(unsigned rsyncable) {
|
||||||
|
if ((rsyncable>0) && (g_nbWorkers==0))
|
||||||
|
EXM_THROW(1, "Rsyncable mode is not compatible with single thread mode \n");
|
||||||
|
g_rsyncable = rsyncable;
|
||||||
|
}
|
||||||
static int g_minAdaptLevel = -50; /* initializing this value requires a constant, so ZSTD_minCLevel() doesn't work */
|
static int g_minAdaptLevel = -50; /* initializing this value requires a constant, so ZSTD_minCLevel() doesn't work */
|
||||||
void FIO_setAdaptMin(int minCLevel)
|
void FIO_setAdaptMin(int minCLevel)
|
||||||
{
|
{
|
||||||
@ -557,6 +563,7 @@ static cRess_t FIO_createCResources(const char* dictFileName, int cLevel,
|
|||||||
DISPLAYLEVEL(3,"set overlapLog = %u \n", g_overlapLog);
|
DISPLAYLEVEL(3,"set overlapLog = %u \n", g_overlapLog);
|
||||||
CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_p_overlapSizeLog, g_overlapLog) );
|
CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_p_overlapSizeLog, g_overlapLog) );
|
||||||
}
|
}
|
||||||
|
CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_p_rsyncable, g_rsyncable) );
|
||||||
#endif
|
#endif
|
||||||
/* dictionary */
|
/* dictionary */
|
||||||
CHECK( ZSTD_CCtx_setPledgedSrcSize(ress.cctx, srcSize) ); /* set the value temporarily for dictionary loading, to adapt compression parameters */
|
CHECK( ZSTD_CCtx_setPledgedSrcSize(ress.cctx, srcSize) ); /* set the value temporarily for dictionary loading, to adapt compression parameters */
|
||||||
|
@ -65,6 +65,7 @@ void FIO_setNotificationLevel(unsigned level);
|
|||||||
void FIO_setOverlapLog(unsigned overlapLog);
|
void FIO_setOverlapLog(unsigned overlapLog);
|
||||||
void FIO_setRemoveSrcFile(unsigned flag);
|
void FIO_setRemoveSrcFile(unsigned flag);
|
||||||
void FIO_setSparseWrite(unsigned sparse); /**< 0: no sparse; 1: disable on stdout; 2: always enabled */
|
void FIO_setSparseWrite(unsigned sparse); /**< 0: no sparse; 1: disable on stdout; 2: always enabled */
|
||||||
|
void FIO_setRsyncable(unsigned rsyncable);
|
||||||
|
|
||||||
|
|
||||||
/*-*************************************
|
/*-*************************************
|
||||||
|
@ -144,6 +144,14 @@ the last one takes effect.
|
|||||||
Due to the chaotic nature of dynamic adaptation, compressed result is not reproducible.
|
Due to the chaotic nature of dynamic adaptation, compressed result is not reproducible.
|
||||||
_note_ : at the time of this writing, `--adapt` can remain stuck at low speed
|
_note_ : at the time of this writing, `--adapt` can remain stuck at low speed
|
||||||
when combined with multiple worker threads (>=2).
|
when combined with multiple worker threads (>=2).
|
||||||
|
* `--rsyncable` :
|
||||||
|
`zstd` will periodically synchronize the compression state to make the
|
||||||
|
compressed file more rsync-friendly. There is a negligible impact to
|
||||||
|
compression ratio, and the faster compression levels will see a small
|
||||||
|
compression speed hit.
|
||||||
|
This feature does not work with `--single-thread`. You probably don't want
|
||||||
|
to use it with long range mode, since it will decrease the effectiveness of
|
||||||
|
the synchronization points, but your milage may vary.
|
||||||
* `-D file`:
|
* `-D file`:
|
||||||
use `file` as Dictionary to compress or decompress FILE(s)
|
use `file` as Dictionary to compress or decompress FILE(s)
|
||||||
* `--no-dictID`:
|
* `--no-dictID`:
|
||||||
|
@ -143,6 +143,7 @@ static int usage_advanced(const char* programName)
|
|||||||
#ifdef ZSTD_MULTITHREAD
|
#ifdef ZSTD_MULTITHREAD
|
||||||
DISPLAY( " -T# : spawns # compression threads (default: 1, 0==# cores) \n");
|
DISPLAY( " -T# : spawns # compression threads (default: 1, 0==# cores) \n");
|
||||||
DISPLAY( " -B# : select size of each job (default: 0==automatic) \n");
|
DISPLAY( " -B# : select size of each job (default: 0==automatic) \n");
|
||||||
|
DISPLAY( " --rsyncable : compress using a rsync-friendly method (-B sets block size) \n");
|
||||||
#endif
|
#endif
|
||||||
DISPLAY( "--no-dictID : don't write dictID into header (dictionary compression)\n");
|
DISPLAY( "--no-dictID : don't write dictID into header (dictionary compression)\n");
|
||||||
DISPLAY( "--[no-]check : integrity check (default: enabled) \n");
|
DISPLAY( "--[no-]check : integrity check (default: enabled) \n");
|
||||||
@ -475,6 +476,7 @@ int main(int argCount, const char* argv[])
|
|||||||
adapt = 0,
|
adapt = 0,
|
||||||
adaptMin = MINCLEVEL,
|
adaptMin = MINCLEVEL,
|
||||||
adaptMax = MAXCLEVEL,
|
adaptMax = MAXCLEVEL,
|
||||||
|
rsyncable = 0,
|
||||||
nextArgumentIsOutFileName = 0,
|
nextArgumentIsOutFileName = 0,
|
||||||
nextArgumentIsMaxDict = 0,
|
nextArgumentIsMaxDict = 0,
|
||||||
nextArgumentIsDictID = 0,
|
nextArgumentIsDictID = 0,
|
||||||
@ -607,6 +609,7 @@ int main(int argCount, const char* argv[])
|
|||||||
#ifdef ZSTD_LZ4COMPRESS
|
#ifdef ZSTD_LZ4COMPRESS
|
||||||
if (!strcmp(argument, "--format=lz4")) { suffix = LZ4_EXTENSION; FIO_setCompressionType(FIO_lz4Compression); continue; }
|
if (!strcmp(argument, "--format=lz4")) { suffix = LZ4_EXTENSION; FIO_setCompressionType(FIO_lz4Compression); continue; }
|
||||||
#endif
|
#endif
|
||||||
|
if (!strcmp(argument, "--rsyncable")) { rsyncable = 1; continue; }
|
||||||
|
|
||||||
/* long commands with arguments */
|
/* long commands with arguments */
|
||||||
#ifndef ZSTD_NODICT
|
#ifndef ZSTD_NODICT
|
||||||
@ -1052,6 +1055,7 @@ int main(int argCount, const char* argv[])
|
|||||||
FIO_setAdaptiveMode(adapt);
|
FIO_setAdaptiveMode(adapt);
|
||||||
FIO_setAdaptMin(adaptMin);
|
FIO_setAdaptMin(adaptMin);
|
||||||
FIO_setAdaptMax(adaptMax);
|
FIO_setAdaptMax(adaptMax);
|
||||||
|
FIO_setRsyncable(rsyncable);
|
||||||
if (adaptMin > cLevel) cLevel = adaptMin;
|
if (adaptMin > cLevel) cLevel = adaptMin;
|
||||||
if (adaptMax < cLevel) cLevel = adaptMax;
|
if (adaptMax < cLevel) cLevel = adaptMax;
|
||||||
|
|
||||||
@ -1060,7 +1064,7 @@ int main(int argCount, const char* argv[])
|
|||||||
else
|
else
|
||||||
operationResult = FIO_compressMultipleFilenames(filenameTable, filenameIdx, outFileName, suffix, dictFileName, cLevel, compressionParams);
|
operationResult = FIO_compressMultipleFilenames(filenameTable, filenameIdx, outFileName, suffix, dictFileName, cLevel, compressionParams);
|
||||||
#else
|
#else
|
||||||
(void)suffix; (void)adapt; (void)ultra; (void)cLevel; (void)ldmFlag; /* not used when ZSTD_NOCOMPRESS set */
|
(void)suffix; (void)adapt; (void)rsyncable; (void)ultra; (void)cLevel; (void)ldmFlag; /* not used when ZSTD_NOCOMPRESS set */
|
||||||
DISPLAY("Compression not supported \n");
|
DISPLAY("Compression not supported \n");
|
||||||
#endif
|
#endif
|
||||||
} else { /* decompression or test */
|
} else { /* decompression or test */
|
||||||
|
Loading…
Reference in New Issue
Block a user