MCPcopy Create free account
hub / github.com/F-Stack/f-stack / __quicklistCompressNode

Function __quicklistCompressNode

app/redis-6.2.6/src/quicklist.c:185–210  ·  view source on GitHub ↗

Compress the ziplist in 'node' and update encoding details. * Returns 1 if ziplist compressed successfully. * Returns 0 if compression failed or if ziplist too small to compress. */

Source from the content-addressed store, hash-verified

183 * Returns 1 if ziplist compressed successfully.
184 * Returns 0 if compression failed or if ziplist too small to compress. */
185REDIS_STATIC int __quicklistCompressNode(quicklistNode *node) {
186#ifdef REDIS_TEST
187 node->attempted_compress = 1;
188#endif
189
190 /* Don't bother compressing small values */
191 if (node->sz < MIN_COMPRESS_BYTES)
192 return 0;
193
194 quicklistLZF *lzf = zmalloc(sizeof(*lzf) + node->sz);
195
196 /* Cancel if compression fails or doesn't compress small enough */
197 if (((lzf->sz = lzf_compress(node->zl, node->sz, lzf->compressed,
198 node->sz)) == 0) ||
199 lzf->sz + MIN_COMPRESS_IMPROVE >= node->sz) {
200 /* lzf_compress aborts/rejects compression if value not compressable. */
201 zfree(lzf);
202 return 0;
203 }
204 lzf = zrealloc(lzf, sizeof(*lzf) + lzf->sz);
205 zfree(node->zl);
206 node->zl = (unsigned char *)lzf;
207 node->encoding = QUICKLIST_NODE_ENCODING_LZF;
208 node->recompress = 0;
209 return 1;
210}
211
212/* Compress only uncompressed nodes. */
213#define quicklistCompressNode(_node) \

Callers

nothing calls this directly

Calls 4

zmallocFunction · 0.85
lzf_compressFunction · 0.85
zreallocFunction · 0.85
zfreeFunction · 0.70

Tested by

no test coverage detected