Decode some binary fields of Intel metadata.
Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com> MFC after: 2 weeks
This commit is contained in:
parent
ef8daf3fed
commit
26f0f92fa2
@ -366,6 +366,78 @@ intel_set_vol_curr_migr_unit(struct intel_raid_vol *vol, off_t curr_migr_unit)
|
|||||||
vol->curr_migr_unit_hi = curr_migr_unit >> 32;
|
vol->curr_migr_unit_hi = curr_migr_unit >> 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
intel_status2str(int status)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (status) {
|
||||||
|
case INTEL_S_READY:
|
||||||
|
return ("READY");
|
||||||
|
case INTEL_S_UNINITIALIZED:
|
||||||
|
return ("UNINITIALIZED");
|
||||||
|
case INTEL_S_DEGRADED:
|
||||||
|
return ("DEGRADED");
|
||||||
|
case INTEL_S_FAILURE:
|
||||||
|
return ("FAILURE");
|
||||||
|
default:
|
||||||
|
return ("UNKNOWN");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
intel_type2str(int type)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case INTEL_T_RAID0:
|
||||||
|
return ("RAID0");
|
||||||
|
case INTEL_T_RAID1:
|
||||||
|
return ("RAID1");
|
||||||
|
case INTEL_T_RAID5:
|
||||||
|
return ("RAID5");
|
||||||
|
default:
|
||||||
|
return ("UNKNOWN");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
intel_cngst2str(int cng_state)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (cng_state) {
|
||||||
|
case INTEL_CNGST_UPDATED:
|
||||||
|
return ("UPDATED");
|
||||||
|
case INTEL_CNGST_NEEDS_UPDATE:
|
||||||
|
return ("NEEDS_UPDATE");
|
||||||
|
case INTEL_CNGST_MASTER_MISSING:
|
||||||
|
return ("MASTER_MISSING");
|
||||||
|
default:
|
||||||
|
return ("UNKNOWN");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
intel_mt2str(int type)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case INTEL_MT_INIT:
|
||||||
|
return ("INIT");
|
||||||
|
case INTEL_MT_REBUILD:
|
||||||
|
return ("REBUILD");
|
||||||
|
case INTEL_MT_VERIFY:
|
||||||
|
return ("VERIFY");
|
||||||
|
case INTEL_MT_GEN_MIGR:
|
||||||
|
return ("GEN_MIGR");
|
||||||
|
case INTEL_MT_STATE_CHANGE:
|
||||||
|
return ("STATE_CHANGE");
|
||||||
|
case INTEL_MT_REPAIR:
|
||||||
|
return ("REPAIR");
|
||||||
|
default:
|
||||||
|
return ("UNKNOWN");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
g_raid_md_intel_print(struct intel_raid_conf *meta)
|
g_raid_md_intel_print(struct intel_raid_conf *meta)
|
||||||
{
|
{
|
||||||
@ -384,7 +456,22 @@ g_raid_md_intel_print(struct intel_raid_conf *meta)
|
|||||||
printf("config_id 0x%08x\n", meta->config_id);
|
printf("config_id 0x%08x\n", meta->config_id);
|
||||||
printf("generation 0x%08x\n", meta->generation);
|
printf("generation 0x%08x\n", meta->generation);
|
||||||
printf("error_log_size %d\n", meta->error_log_size);
|
printf("error_log_size %d\n", meta->error_log_size);
|
||||||
printf("attributes 0x%08x\n", meta->attributes);
|
printf("attributes 0x%b\n", meta->attributes,
|
||||||
|
"\020"
|
||||||
|
"\001RAID0"
|
||||||
|
"\002RAID1"
|
||||||
|
"\003RAID10"
|
||||||
|
"\004RAID1E"
|
||||||
|
"\005RAID15"
|
||||||
|
"\006RAIDCNG"
|
||||||
|
"\007EXT_STRIP"
|
||||||
|
"\032NVM_CACHE"
|
||||||
|
"\0332TB_DISK"
|
||||||
|
"\034BBM"
|
||||||
|
"\035NVM_CACHE"
|
||||||
|
"\0362TB"
|
||||||
|
"\037PM"
|
||||||
|
"\040CHECKSUM");
|
||||||
printf("total_disks %u\n", meta->total_disks);
|
printf("total_disks %u\n", meta->total_disks);
|
||||||
printf("total_volumes %u\n", meta->total_volumes);
|
printf("total_volumes %u\n", meta->total_volumes);
|
||||||
printf("error_log_pos %u\n", meta->error_log_pos);
|
printf("error_log_pos %u\n", meta->error_log_pos);
|
||||||
@ -392,32 +479,50 @@ g_raid_md_intel_print(struct intel_raid_conf *meta)
|
|||||||
printf("orig_config_id 0x%08x\n", meta->orig_config_id);
|
printf("orig_config_id 0x%08x\n", meta->orig_config_id);
|
||||||
printf("pwr_cycle_count %u\n", meta->pwr_cycle_count);
|
printf("pwr_cycle_count %u\n", meta->pwr_cycle_count);
|
||||||
printf("bbm_log_size %u\n", meta->bbm_log_size);
|
printf("bbm_log_size %u\n", meta->bbm_log_size);
|
||||||
|
printf("Flags: S - Spare, A - Assigned, F - Failed, O - Online, D - Disabled\n");
|
||||||
printf("DISK# serial disk_sectors disk_sectors_hi disk_id flags owner\n");
|
printf("DISK# serial disk_sectors disk_sectors_hi disk_id flags owner\n");
|
||||||
for (i = 0; i < meta->total_disks; i++ ) {
|
for (i = 0; i < meta->total_disks; i++ ) {
|
||||||
printf(" %d <%.16s> %u %u 0x%08x 0x%08x %08x\n", i,
|
printf(" %d <%.16s> %u %u 0x%08x 0x%b %08x\n", i,
|
||||||
meta->disk[i].serial, meta->disk[i].sectors,
|
meta->disk[i].serial, meta->disk[i].sectors,
|
||||||
meta->disk[i].sectors_hi, meta->disk[i].id,
|
meta->disk[i].sectors_hi, meta->disk[i].id,
|
||||||
meta->disk[i].flags, meta->disk[i].owner_cfg_num);
|
meta->disk[i].flags, "\20\01S\02A\03F\04O\05D",
|
||||||
|
meta->disk[i].owner_cfg_num);
|
||||||
}
|
}
|
||||||
for (i = 0; i < meta->total_volumes; i++) {
|
for (i = 0; i < meta->total_volumes; i++) {
|
||||||
mvol = intel_get_volume(meta, i);
|
mvol = intel_get_volume(meta, i);
|
||||||
printf(" ****** Volume %d ******\n", i);
|
printf(" ****** Volume %d ******\n", i);
|
||||||
printf(" name %.16s\n", mvol->name);
|
printf(" name %.16s\n", mvol->name);
|
||||||
printf(" total_sectors %ju\n", mvol->total_sectors);
|
printf(" total_sectors %ju\n", mvol->total_sectors);
|
||||||
printf(" state 0x%08x\n", mvol->state);
|
printf(" state 0x%b\n", mvol->state,
|
||||||
|
"\020"
|
||||||
|
"\001BOOTABLE"
|
||||||
|
"\002BOOT_DEVICE"
|
||||||
|
"\003READ_COALESCING"
|
||||||
|
"\004WRITE_COALESCING"
|
||||||
|
"\005LAST_SHUTDOWN_DIRTY"
|
||||||
|
"\006HIDDEN_AT_BOOT"
|
||||||
|
"\007CURRENTLY_HIDDEN"
|
||||||
|
"\010VERIFY_AND_FIX"
|
||||||
|
"\011MAP_STATE_UNINIT"
|
||||||
|
"\012NO_AUTO_RECOVERY"
|
||||||
|
"\013CLONE_N_GO"
|
||||||
|
"\014CLONE_MAN_SYNC"
|
||||||
|
"\015CNG_MASTER_DISK_NUM");
|
||||||
printf(" reserved %u\n", mvol->reserved);
|
printf(" reserved %u\n", mvol->reserved);
|
||||||
printf(" migr_priority %u\n", mvol->migr_priority);
|
printf(" migr_priority %u\n", mvol->migr_priority);
|
||||||
printf(" num_sub_vols %u\n", mvol->num_sub_vols);
|
printf(" num_sub_vols %u\n", mvol->num_sub_vols);
|
||||||
printf(" tid %u\n", mvol->tid);
|
printf(" tid %u\n", mvol->tid);
|
||||||
printf(" cng_master_disk %u\n", mvol->cng_master_disk);
|
printf(" cng_master_disk %u\n", mvol->cng_master_disk);
|
||||||
printf(" cache_policy %u\n", mvol->cache_policy);
|
printf(" cache_policy %u\n", mvol->cache_policy);
|
||||||
printf(" cng_state %u\n", mvol->cng_state);
|
printf(" cng_state %u (%s)\n", mvol->cng_state,
|
||||||
|
intel_cngst2str(mvol->cng_state));
|
||||||
printf(" cng_sub_state %u\n", mvol->cng_sub_state);
|
printf(" cng_sub_state %u\n", mvol->cng_sub_state);
|
||||||
printf(" curr_migr_unit %u\n", mvol->curr_migr_unit);
|
printf(" curr_migr_unit %u\n", mvol->curr_migr_unit);
|
||||||
printf(" curr_migr_unit_hi %u\n", mvol->curr_migr_unit_hi);
|
printf(" curr_migr_unit_hi %u\n", mvol->curr_migr_unit_hi);
|
||||||
printf(" checkpoint_id %u\n", mvol->checkpoint_id);
|
printf(" checkpoint_id %u\n", mvol->checkpoint_id);
|
||||||
printf(" migr_state %u\n", mvol->migr_state);
|
printf(" migr_state %u\n", mvol->migr_state);
|
||||||
printf(" migr_type %u\n", mvol->migr_type);
|
printf(" migr_type %u (%s)\n", mvol->migr_type,
|
||||||
|
intel_mt2str(mvol->migr_type));
|
||||||
printf(" dirty %u\n", mvol->dirty);
|
printf(" dirty %u\n", mvol->dirty);
|
||||||
printf(" fs_state %u\n", mvol->fs_state);
|
printf(" fs_state %u\n", mvol->fs_state);
|
||||||
printf(" verify_errors %u\n", mvol->verify_errors);
|
printf(" verify_errors %u\n", mvol->verify_errors);
|
||||||
@ -433,8 +538,10 @@ g_raid_md_intel_print(struct intel_raid_conf *meta)
|
|||||||
printf(" stripe_count %u\n", mmap->stripe_count);
|
printf(" stripe_count %u\n", mmap->stripe_count);
|
||||||
printf(" stripe_count_hi %u\n", mmap->stripe_count_hi);
|
printf(" stripe_count_hi %u\n", mmap->stripe_count_hi);
|
||||||
printf(" strip_sectors %u\n", mmap->strip_sectors);
|
printf(" strip_sectors %u\n", mmap->strip_sectors);
|
||||||
printf(" status %u\n", mmap->status);
|
printf(" status %u (%s)\n", mmap->status,
|
||||||
printf(" type %u\n", mmap->type);
|
intel_status2str(mmap->status));
|
||||||
|
printf(" type %u (%s)\n", mmap->type,
|
||||||
|
intel_type2str(mmap->type));
|
||||||
printf(" total_disks %u\n", mmap->total_disks);
|
printf(" total_disks %u\n", mmap->total_disks);
|
||||||
printf(" total_domains %u\n", mmap->total_domains);
|
printf(" total_domains %u\n", mmap->total_domains);
|
||||||
printf(" failed_disk_num %u\n", mmap->failed_disk_num);
|
printf(" failed_disk_num %u\n", mmap->failed_disk_num);
|
||||||
|
Loading…
Reference in New Issue
Block a user