Lines Matching refs:node

79         (e)->node = NULL;                                                      \
139 quicklistNode *node; in quicklistCreateNode() local
140 node = zmalloc(sizeof(*node)); in quicklistCreateNode()
141 node->zl = NULL; in quicklistCreateNode()
142 node->count = 0; in quicklistCreateNode()
143 node->sz = 0; in quicklistCreateNode()
144 node->next = node->prev = NULL; in quicklistCreateNode()
145 node->encoding = QUICKLIST_NODE_ENCODING_RAW; in quicklistCreateNode()
146 node->container = QUICKLIST_NODE_CONTAINER_ZIPLIST; in quicklistCreateNode()
147 node->recompress = 0; in quicklistCreateNode()
148 return node; in quicklistCreateNode()
178 REDIS_STATIC int __quicklistCompressNode(quicklistNode *node) { in __quicklistCompressNode() argument
180 node->attempted_compress = 1; in __quicklistCompressNode()
184 if (node->sz < MIN_COMPRESS_BYTES) in __quicklistCompressNode()
187 quicklistLZF *lzf = zmalloc(sizeof(*lzf) + node->sz); in __quicklistCompressNode()
190 if (((lzf->sz = lzf_compress(node->zl, node->sz, lzf->compressed, in __quicklistCompressNode()
191 node->sz)) == 0) || in __quicklistCompressNode()
192 lzf->sz + MIN_COMPRESS_IMPROVE >= node->sz) { in __quicklistCompressNode()
198 zfree(node->zl); in __quicklistCompressNode()
199 node->zl = (unsigned char *)lzf; in __quicklistCompressNode()
200 node->encoding = QUICKLIST_NODE_ENCODING_LZF; in __quicklistCompressNode()
201 node->recompress = 0; in __quicklistCompressNode()
215 REDIS_STATIC int __quicklistDecompressNode(quicklistNode *node) { in __quicklistDecompressNode() argument
217 node->attempted_compress = 0; in __quicklistDecompressNode()
220 void *decompressed = zmalloc(node->sz); in __quicklistDecompressNode()
221 quicklistLZF *lzf = (quicklistLZF *)node->zl; in __quicklistDecompressNode()
222 if (lzf_decompress(lzf->compressed, lzf->sz, decompressed, node->sz) == 0) { in __quicklistDecompressNode()
228 node->zl = decompressed; in __quicklistDecompressNode()
229 node->encoding = QUICKLIST_NODE_ENCODING_RAW; in __quicklistDecompressNode()
253 size_t quicklistGetLzf(const quicklistNode *node, void **data) { in quicklistGetLzf() argument
254 quicklistLZF *lzf = (quicklistLZF *)node->zl; in quicklistGetLzf()
266 quicklistNode *node) { in __quicklistCompress() argument
279 if (h != node && t != node) in __quicklistCompress()
280 quicklistCompressNode(node); in __quicklistCompress()
289 if (h != node && hn != node && t != node && tp != node) { in __quicklistCompress()
290 quicklistCompressNode(node); in __quicklistCompress()
313 if (forward == node || reverse == node) in __quicklistCompress()
324 quicklistCompressNode(node); in __quicklistCompress()
420 REDIS_STATIC int _quicklistNodeAllowInsert(const quicklistNode *node, in _quicklistNodeAllowInsert() argument
422 if (unlikely(!node)) in _quicklistNodeAllowInsert()
441 unsigned int new_sz = node->sz + sz + ziplist_overhead; in _quicklistNodeAllowInsert()
446 else if ((int)node->count < fill) in _quicklistNodeAllowInsert()
471 #define quicklistNodeUpdateSz(node) \ argument
473 (node)->sz = ziplistBlobLen((node)->zl); \
488 quicklistNode *node = quicklistCreateNode(); in quicklistPushHead() local
489 node->zl = ziplistPush(ziplistNew(), value, sz, ZIPLIST_HEAD); in quicklistPushHead()
491 quicklistNodeUpdateSz(node); in quicklistPushHead()
492 _quicklistInsertNodeBefore(quicklist, quicklist->head, node); in quicklistPushHead()
511 quicklistNode *node = quicklistCreateNode(); in quicklistPushTail() local
512 node->zl = ziplistPush(ziplistNew(), value, sz, ZIPLIST_TAIL); in quicklistPushTail()
514 quicklistNodeUpdateSz(node); in quicklistPushTail()
515 _quicklistInsertNodeAfter(quicklist, quicklist->tail, node); in quicklistPushTail()
526 quicklistNode *node = quicklistCreateNode(); in quicklistAppendZiplist() local
528 node->zl = zl; in quicklistAppendZiplist()
529 node->count = ziplistLen(node->zl); in quicklistAppendZiplist()
530 node->sz = ziplistBlobLen(zl); in quicklistAppendZiplist()
532 _quicklistInsertNodeAfter(quicklist, quicklist->tail, node); in quicklistAppendZiplist()
533 quicklist->count += node->count; in quicklistAppendZiplist()
580 quicklistNode *node) { in __quicklistDelNode() argument
581 if (node->next) in __quicklistDelNode()
582 node->next->prev = node->prev; in __quicklistDelNode()
583 if (node->prev) in __quicklistDelNode()
584 node->prev->next = node->next; in __quicklistDelNode()
586 if (node == quicklist->tail) { in __quicklistDelNode()
587 quicklist->tail = node->prev; in __quicklistDelNode()
590 if (node == quicklist->head) { in __quicklistDelNode()
591 quicklist->head = node->next; in __quicklistDelNode()
598 quicklist->count -= node->count; in __quicklistDelNode()
600 zfree(node->zl); in __quicklistDelNode()
601 zfree(node); in __quicklistDelNode()
613 REDIS_STATIC int quicklistDelIndex(quicklist *quicklist, quicklistNode *node, in quicklistDelIndex() argument
617 node->zl = ziplistDelete(node->zl, p); in quicklistDelIndex()
618 node->count--; in quicklistDelIndex()
619 if (node->count == 0) { in quicklistDelIndex()
621 __quicklistDelNode(quicklist, node); in quicklistDelIndex()
623 quicklistNodeUpdateSz(node); in quicklistDelIndex()
635 quicklistNode *prev = entry->node->prev; in quicklistDelEntry()
636 quicklistNode *next = entry->node->next; in quicklistDelEntry()
638 entry->node, &entry->zi); in quicklistDelEntry()
672 entry.node->zl = ziplistDelete(entry.node->zl, &entry.zi); in quicklistReplaceAtIndex()
673 entry.node->zl = ziplistInsert(entry.node->zl, entry.zi, data, sz); in quicklistReplaceAtIndex()
674 quicklistNodeUpdateSz(entry.node); in quicklistReplaceAtIndex()
675 quicklistCompress(quicklist, entry.node); in quicklistReplaceAtIndex()
797 REDIS_STATIC quicklistNode *_quicklistSplitNode(quicklistNode *node, int offset, in _quicklistSplitNode() argument
799 size_t zl_sz = node->sz; in _quicklistSplitNode()
805 memcpy(new_node->zl, node->zl, zl_sz); in _quicklistSplitNode()
816 node->zl = ziplistDeleteRange(node->zl, orig_start, orig_extent); in _quicklistSplitNode()
817 node->count = ziplistLen(node->zl); in _quicklistSplitNode()
818 quicklistNodeUpdateSz(node); in _quicklistSplitNode()
824 D("After split lengths: orig (%d), new (%d)", node->count, new_node->count); in _quicklistSplitNode()
836 quicklistNode *node = entry->node; in _quicklistInsert() local
839 if (!node) { in _quicklistInsert()
851 if (!_quicklistNodeAllowInsert(node, fill, sz)) { in _quicklistInsert()
853 node->count, fill); in _quicklistInsert()
857 if (after && (entry->offset == node->count)) { in _quicklistInsert()
860 if (!_quicklistNodeAllowInsert(node->next, fill, sz)) { in _quicklistInsert()
869 if (!_quicklistNodeAllowInsert(node->prev, fill, sz)) { in _quicklistInsert()
878 quicklistDecompressNodeForUse(node); in _quicklistInsert()
879 unsigned char *next = ziplistNext(node->zl, entry->zi); in _quicklistInsert()
881 node->zl = ziplistPush(node->zl, value, sz, ZIPLIST_TAIL); in _quicklistInsert()
883 node->zl = ziplistInsert(node->zl, next, value, sz); in _quicklistInsert()
885 node->count++; in _quicklistInsert()
886 quicklistNodeUpdateSz(node); in _quicklistInsert()
887 quicklistRecompressOnly(quicklist, node); in _quicklistInsert()
890 quicklistDecompressNodeForUse(node); in _quicklistInsert()
891 node->zl = ziplistInsert(node->zl, entry->zi, value, sz); in _quicklistInsert()
892 node->count++; in _quicklistInsert()
893 quicklistNodeUpdateSz(node); in _quicklistInsert()
894 quicklistRecompressOnly(quicklist, node); in _quicklistInsert()
895 } else if (full && at_tail && node->next && !full_next && after) { in _quicklistInsert()
899 new_node = node->next; in _quicklistInsert()
905 } else if (full && at_head && node->prev && !full_prev && !after) { in _quicklistInsert()
909 new_node = node->prev; in _quicklistInsert()
915 } else if (full && ((at_tail && node->next && full_next && after) || in _quicklistInsert()
916 (at_head && node->prev && full_prev && !after))) { in _quicklistInsert()
924 __quicklistInsertNode(quicklist, node, new_node, after); in _quicklistInsert()
929 quicklistDecompressNodeForUse(node); in _quicklistInsert()
930 new_node = _quicklistSplitNode(node, entry->offset, after); in _quicklistInsert()
935 __quicklistInsertNode(quicklist, node, new_node, after); in _quicklistInsert()
936 _quicklistMergeNodes(quicklist, node); in _quicklistInsert()
979 quicklistNode *node = entry.node; in quicklistDelRange() local
983 quicklistNode *next = node->next; in quicklistDelRange()
987 if (entry.offset == 0 && extent >= node->count) { in quicklistDelRange()
991 del = node->count; in quicklistDelRange()
992 } else if (entry.offset >= 0 && extent >= node->count) { in quicklistDelRange()
995 del = node->count - entry.offset; in quicklistDelRange()
1017 extent, del, entry.offset, delete_entire_node, node->count); in quicklistDelRange()
1020 __quicklistDelNode(quicklist, node); in quicklistDelRange()
1022 quicklistDecompressNodeForUse(node); in quicklistDelRange()
1023 node->zl = ziplistDeleteRange(node->zl, entry.offset, del); in quicklistDelRange()
1024 quicklistNodeUpdateSz(node); in quicklistDelRange()
1025 node->count -= del; in quicklistDelRange()
1027 quicklistDeleteIfEmpty(quicklist, node); in quicklistDelRange()
1028 if (node) in quicklistDelRange()
1029 quicklistRecompressOnly(quicklist, node); in quicklistDelRange()
1034 node = next; in quicklistDelRange()
1079 base->current = entry.node; in quicklistGetIteratorAtIdx()
1126 entry->node = iter->current; in quicklistNext()
1193 quicklistNode *node = quicklistCreateNode(); in quicklistDup() local
1195 if (node->encoding == QUICKLIST_NODE_ENCODING_LZF) { in quicklistDup()
1196 quicklistLZF *lzf = (quicklistLZF *)node->zl; in quicklistDup()
1198 node->zl = zmalloc(lzf_sz); in quicklistDup()
1199 memcpy(node->zl, current->zl, lzf_sz); in quicklistDup()
1200 } else if (node->encoding == QUICKLIST_NODE_ENCODING_RAW) { in quicklistDup()
1201 node->zl = zmalloc(current->sz); in quicklistDup()
1202 memcpy(node->zl, current->zl, current->sz); in quicklistDup()
1205 node->count = current->count; in quicklistDup()
1206 copy->count += node->count; in quicklistDup()
1207 node->sz = current->sz; in quicklistDup()
1208 node->encoding = current->encoding; in quicklistDup()
1210 _quicklistInsertNodeAfter(copy, copy->tail, node); in quicklistDup()
1263 entry->node = n; in quicklistIndex()
1273 quicklistDecompressNodeForUse(entry->node); in quicklistIndex()
1274 entry->zi = ziplistIndex(entry->node->zl, entry->offset); in quicklistIndex()
1343 quicklistNode *node; in quicklistPopCustom() local
1345 node = quicklist->head; in quicklistPopCustom()
1347 node = quicklist->tail; in quicklistPopCustom()
1352 p = ziplistIndex(node->zl, pos); in quicklistPopCustom()
1365 quicklistDelIndex(quicklist, node, &p); in quicklistPopCustom()
1490 if (entry.node != prev) { in _itrprintr()
1493 prev = entry.node; in _itrprintr()
1571 quicklistNode *node = ql->head; in _ql_verify() local
1575 for (unsigned int at = 0; at < ql->len; at++, node = node->next) { in _ql_verify()
1576 if (node && (at < low_raw || at >= high_raw)) { in _ql_verify()
1577 if (node->encoding != QUICKLIST_NODE_ENCODING_RAW) { in _ql_verify()
1581 at, ql->compress, low_raw, high_raw, ql->len, node->sz, in _ql_verify()
1582 node->recompress); in _ql_verify()
1586 if (node->encoding != QUICKLIST_NODE_ENCODING_LZF && in _ql_verify()
1587 !node->attempted_compress) { in _ql_verify()
1591 at, ql->compress, low_raw, high_raw, ql->len, node->sz, in _ql_verify()
1592 node->recompress, node->attempted_compress); in _ql_verify()
2606 quicklistNode *node = ql->head; in quicklistTest() local
2611 at++, node = node->next) { in quicklistTest()
2613 if (node->encoding != QUICKLIST_NODE_ENCODING_RAW) { in quicklistTest()
2618 node->sz); in quicklistTest()
2621 if (node->encoding != QUICKLIST_NODE_ENCODING_LZF) { in quicklistTest()
2626 node->sz, node->attempted_compress); in quicklistTest()