#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include const char * zdb_ot_name(dmu_object_type_t type) { if (type < DMU_OT_NUMTYPES) return (dmu_ot[type].ot_name); else if ((type & DMU_OT_NEWTYPE) && ((type & DMU_OT_BYTESWAP_MASK) < DMU_BSWAP_NUMFUNCS)) return (dmu_ot_byteswap[type & DMU_OT_BYTESWAP_MASK].ob_name); else return ("UNKNOWN"); } int livelist_compare(const void *larg, const void *rarg) { const blkptr_t *l = larg; const blkptr_t *r = rarg; int cmp = 0; /* Sort them according to dva[0] */ cmp = TREE_CMP(DVA_GET_VDEV(&l->blk_dva[0]), DVA_GET_VDEV(&r->blk_dva[0])); if (cmp != 0) return (cmp); /* if vdevs are equal, sort by offsets. */ cmp = TREE_CMP(DVA_GET_OFFSET(&l->blk_dva[0]), DVA_GET_OFFSET(&r->blk_dva[0])); if (cmp != 0) return (cmp); /* * Since we're storing blkptrs without cancelling FREE/ALLOC pairs, * it's possible the offsets are equal. In that case, sort by txg */ return (TREE_CMP(BP_GET_BIRTH(l), BP_GET_BIRTH(r))); }