403 /* ARGSUSED */ |
403 /* ARGSUSED */ |
404 static int |
404 static int |
405 blkptr(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv) |
405 blkptr(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv) |
406 { |
406 { |
407 blkptr_t bp; |
407 blkptr_t bp; |
408 dva_t *dva; |
|
409 dmu_object_type_info_t *doti; |
408 dmu_object_type_info_t *doti; |
410 zio_compress_info_t *zct; |
409 zio_compress_info_t *zct; |
411 zio_checksum_info_t *zci; |
410 zio_checksum_info_t *zci; |
412 int i; |
411 int i; |
413 char buf[MAXPATHLEN]; |
412 char buf[MAXPATHLEN]; |
437 mdb_readstr(buf, sizeof (buf), (uintptr_t)zct[i].ci_name); |
436 mdb_readstr(buf, sizeof (buf), (uintptr_t)zct[i].ci_name); |
438 zct[i].ci_name = local_strdup(buf); |
437 zct[i].ci_name = local_strdup(buf); |
439 } |
438 } |
440 |
439 |
441 for (i = 0; i < SPA_DVAS_PER_BP; i++) { |
440 for (i = 0; i < SPA_DVAS_PER_BP; i++) { |
442 dva = &bp.blk_dva[i]; |
441 dva_t *dva = &bp.blk_dva[i]; |
443 mdb_printf("DVA[%d]: vdev_id %lld / %llx\n", i, |
442 mdb_printf("DVA[%d]: GANG: %-5s GRID: %2x ASIZE: %5x " |
444 DVA_GET_VDEV(dva), DVA_GET_OFFSET(dva)); |
443 "vdev %llu offset %llx\n", |
445 mdb_printf("DVA[%d]: GRID: %04x\t" |
444 i, |
446 "ASIZE: %llx\n", i, DVA_GET_GRID(dva), DVA_GET_ASIZE(dva)); |
445 DVA_GET_GANG(dva) ? "TRUE" : "FALSE", |
|
446 DVA_GET_GRID(dva), |
|
447 DVA_GET_ASIZE(dva), |
|
448 DVA_GET_VDEV(dva), |
|
449 DVA_GET_OFFSET(dva)); |
447 } |
450 } |
448 mdb_printf("LSIZE: %-16llx\t\tPSIZE: %llx\n", |
451 mdb_printf("LSIZE: %-16llx\t\tPSIZE: %llx\n", |
449 BP_GET_LSIZE(&bp), BP_GET_PSIZE(&bp)); |
452 BP_GET_LSIZE(&bp), BP_GET_PSIZE(&bp)); |
450 mdb_printf("ENDIAN: %6s GANG: %-5s\tTYPE: %s\n", |
453 mdb_printf("ENDIAN: %-6s TYPE: %s\n", |
451 BP_GET_BYTEORDER(&bp) ? "LITTLE" : "BIG", |
454 BP_GET_BYTEORDER(&bp) ? "LITTLE" : "BIG", |
452 DVA_GET_GANG(dva) ? "TRUE" : "FALSE", |
|
453 doti[BP_GET_TYPE(&bp)].ot_name); |
455 doti[BP_GET_TYPE(&bp)].ot_name); |
454 mdb_printf("BIRTH: %-16llx LEVEL: %-2d\tFILL: %llx\n", |
456 mdb_printf("BIRTH: %-16llx LEVEL: %-2d\tFILL: %llx\n", |
455 bp.blk_birth, BP_GET_LEVEL(&bp), bp.blk_fill); |
457 bp.blk_birth, BP_GET_LEVEL(&bp), bp.blk_fill); |
456 mdb_printf("CKFUNC: %-16s\t\tCOMP: %s\n", |
458 mdb_printf("CKFUNC: %-16s\t\tCOMP: %s\n", |
457 zci[BP_GET_CHECKSUM(&bp)].ci_name, |
459 zci[BP_GET_CHECKSUM(&bp)].ci_name, |
1168 uintptr_t childaddr; |
1170 uintptr_t childaddr; |
1169 uintptr_t *child; |
1171 uintptr_t *child; |
1170 uint64_t ms_allocmap[TXG_SIZE] = {0, 0, 0, 0}; |
1172 uint64_t ms_allocmap[TXG_SIZE] = {0, 0, 0, 0}; |
1171 uint64_t ms_freemap[TXG_SIZE] = {0, 0, 0, 0}; |
1173 uint64_t ms_freemap[TXG_SIZE] = {0, 0, 0, 0}; |
1172 uint64_t ms_map = 0; |
1174 uint64_t ms_map = 0; |
1173 uint64_t ms_usable_space = 0; |
1175 uint64_t avail = 0; |
1174 int i, j; |
1176 int i, j; |
1175 int havecompressed = TRUE; |
1177 int havecompressed = TRUE; |
1176 int shift = 20; |
1178 int shift = 20; |
1177 char *suffix = "M"; |
1179 char *suffix = "M"; |
1178 int bits = FALSE; |
1180 int bits = FALSE; |
1280 GETMEMB(vdev_ms[j], struct metaslab, |
1282 GETMEMB(vdev_ms[j], struct metaslab, |
1281 ms_freemap, ms.ms_freemap) || |
1283 ms_freemap, ms.ms_freemap) || |
1282 GETMEMB(vdev_ms[j], struct metaslab, |
1284 GETMEMB(vdev_ms[j], struct metaslab, |
1283 ms_map, ms.ms_map) || |
1285 ms_map, ms.ms_map) || |
1284 GETMEMB(vdev_ms[j], struct metaslab, |
1286 GETMEMB(vdev_ms[j], struct metaslab, |
1285 ms_usable_space, ms.ms_usable_space)) { |
1287 ms_smo, ms.ms_smo)) { |
1286 return (DCMD_ERR); |
1288 return (DCMD_ERR); |
1287 } |
1289 } |
1288 |
1290 |
1289 ms_allocmap[0] += ms.ms_allocmap[0].sm_space; |
1291 ms_allocmap[0] += ms.ms_allocmap[0].sm_space; |
1290 ms_allocmap[1] += ms.ms_allocmap[1].sm_space; |
1292 ms_allocmap[1] += ms.ms_allocmap[1].sm_space; |
1293 ms_freemap[0] += ms.ms_freemap[0].sm_space; |
1295 ms_freemap[0] += ms.ms_freemap[0].sm_space; |
1294 ms_freemap[1] += ms.ms_freemap[1].sm_space; |
1296 ms_freemap[1] += ms.ms_freemap[1].sm_space; |
1295 ms_freemap[2] += ms.ms_freemap[2].sm_space; |
1297 ms_freemap[2] += ms.ms_freemap[2].sm_space; |
1296 ms_freemap[3] += ms.ms_freemap[3].sm_space; |
1298 ms_freemap[3] += ms.ms_freemap[3].sm_space; |
1297 ms_map += ms.ms_map.sm_space; |
1299 ms_map += ms.ms_map.sm_space; |
1298 ms_usable_space += ms.ms_usable_space; |
1300 avail += ms.ms_map.sm_size - ms.ms_smo.smo_alloc; |
1299 } |
1301 } |
1300 } |
1302 } |
1301 |
1303 |
1302 mdb_printf("ms_allocmap = %llu%s %llu%s %llu%s %llu%s\n", |
1304 mdb_printf("ms_allocmap = %llu%s %llu%s %llu%s %llu%s\n", |
1303 ms_allocmap[0] >> shift, suffix, |
1305 ms_allocmap[0] >> shift, suffix, |
1308 ms_freemap[0] >> shift, suffix, |
1310 ms_freemap[0] >> shift, suffix, |
1309 ms_freemap[1] >> shift, suffix, |
1311 ms_freemap[1] >> shift, suffix, |
1310 ms_freemap[2] >> shift, suffix, |
1312 ms_freemap[2] >> shift, suffix, |
1311 ms_freemap[3] >> shift, suffix); |
1313 ms_freemap[3] >> shift, suffix); |
1312 mdb_printf("ms_map = %llu%s\n", ms_map >> shift, suffix); |
1314 mdb_printf("ms_map = %llu%s\n", ms_map >> shift, suffix); |
1313 mdb_printf("ms_usable_space = %llu%s\n", |
1315 mdb_printf("avail = %llu%s\n", avail >> shift, suffix); |
1314 ms_usable_space >> shift, suffix); |
|
1315 |
1316 |
1316 return (DCMD_OK); |
1317 return (DCMD_OK); |
1317 } |
1318 } |
1318 |
1319 |
1319 /* |
1320 /* |