| 616 | } |
| 617 | |
| 618 | long defragHash(redisDb *db, dictEntry *kde) { |
| 619 | long defragged = 0; |
| 620 | robj *ob = (robj*)dictGetVal(kde); |
| 621 | dict *d, *newd; |
| 622 | serverAssert(ob->type == OBJ_HASH && ob->encoding == OBJ_ENCODING_HT); |
| 623 | d = (dict*)ptrFromObj(ob); |
| 624 | if (dictSize(d) > cserver.active_defrag_max_scan_fields) |
| 625 | defragLater(db, kde); |
| 626 | else |
| 627 | defragged += activeDefragSdsDict(d, DEFRAG_SDS_DICT_VAL_IS_SDS); |
| 628 | /* handle the dict struct */ |
| 629 | if ((newd = (dict*)activeDefragAlloc(ptrFromObj(ob)))) |
| 630 | defragged++, ob->m_ptr = newd; |
| 631 | /* defrag the dict tables */ |
| 632 | defragged += dictDefragTables((dict*)ptrFromObj(ob)); |
| 633 | return defragged; |
| 634 | } |
| 635 | |
| 636 | long defragSet(redisDb *db, dictEntry *kde) { |
| 637 | long defragged = 0; |
no test coverage detected