From 65884368cd42d79b567f12d3e84adc7009e12d72 Mon Sep 17 00:00:00 2001 From: Artur Paszkiewicz Date: Wed, 29 Mar 2017 11:54:16 +0200 Subject: [PATCH] Detail: show consistency policy References: FATE#321941 Show the currently enabled consistency policy in the output from --detail. Add 3 spaces to all existing items in Detail output to align with "Consistency Policy : ". Signed-off-by: Artur Paszkiewicz Signed-off-by: Jes Sorensen --- Detail.c | 90 +++++++++++++++++++++++++++++++++++------------------------ super-ddf.c | 6 ++-- super-intel.c | 2 +- super0.c | 4 +-- super1.c | 9 +++--- 5 files changed, 65 insertions(+), 46 deletions(-) diff --git a/Detail.c b/Detail.c index 3d92855..136875b 100644 --- a/Detail.c +++ b/Detail.c @@ -402,24 +402,25 @@ int Detail(char *dev, struct context *c) printf("%s:\n", dev); if (container) - printf(" Container : %s, member %s\n", container, member); + printf(" Container : %s, member %s\n", container, + member); else { if (sra && sra->array.major_version < 0) - printf(" Version : %s\n", sra->text_version); + printf(" Version : %s\n", sra->text_version); else - printf(" Version : %d.%d\n", + printf(" Version : %d.%d\n", array.major_version, array.minor_version); } atime = array.ctime; if (atime) - printf(" Creation Time : %.24s\n", ctime(&atime)); + printf(" Creation Time : %.24s\n", ctime(&atime)); if (array.raid_disks == 0 && external) str = "container"; if (str) - printf(" Raid Level : %s\n", str); + printf(" Raid Level : %s\n", str); if (larray_size) - printf(" Array Size : %llu%s\n", (larray_size>>10), + printf(" Array Size : %llu%s\n", (larray_size>>10), human_size(larray_size)); if (array.level >= 1) { if (sra) @@ -428,38 +429,38 @@ int Detail(char *dev, struct context *c) (larray_size >= 0xFFFFFFFFULL|| array.size == 0)) { unsigned long long dsize = get_component_size(fd); if (dsize > 0) - printf(" Used Dev Size : %llu%s\n", + printf(" Used Dev Size : %llu%s\n", dsize/2, human_size((long long)dsize<<9)); else - printf(" Used Dev Size : unknown\n"); + printf(" Used Dev Size : unknown\n"); } else - printf(" Used Dev Size : %lu%s\n", + printf(" Used Dev Size : %lu%s\n", (unsigned long)array.size, human_size((unsigned long long)array.size<<10)); } if (array.raid_disks) - printf(" Raid Devices : %d\n", array.raid_disks); - printf(" Total Devices : %d\n", array.nr_disks); + printf(" Raid Devices : %d\n", array.raid_disks); + printf(" Total Devices : %d\n", array.nr_disks); if (!container && ((sra == NULL && array.major_version == 0) || (sra && sra->array.major_version == 0))) - printf("Preferred Minor : %d\n", array.md_minor); + printf(" Preferred Minor : %d\n", array.md_minor); if (sra == NULL || sra->array.major_version >= 0) - printf(" Persistence : Superblock is %spersistent\n", + printf(" Persistence : Superblock is %spersistent\n", array.not_persistent?"not ":""); printf("\n"); /* Only try GET_BITMAP_FILE for 0.90.01 and later */ if (vers >= 9001 && ioctl(fd, GET_BITMAP_FILE, &bmf) == 0 && bmf.pathname[0]) { - printf(" Intent Bitmap : %s\n", bmf.pathname); + printf(" Intent Bitmap : %s\n", bmf.pathname); printf("\n"); } else if (array.state & (1<percent < 0 && e->percent != RESYNC_PENDING && e->percent != RESYNC_DELAYED)) ? "" : sync_action[e->resync], @@ -481,27 +482,27 @@ int Detail(char *dev, struct context *c) (e && e->percent == RESYNC_DELAYED) ? " (DELAYED)": "", (e && e->percent == RESYNC_PENDING) ? " (PENDING)": ""); } else if (inactive) { - printf(" State : inactive\n"); + printf(" State : inactive\n"); } if (array.raid_disks) - printf(" Active Devices : %d\n", array.active_disks); + printf(" Active Devices : %d\n", array.active_disks); if (array.working_disks > 0) - printf("Working Devices : %d\n", array.working_disks); + printf(" Working Devices : %d\n", array.working_disks); if (array.raid_disks) { - printf(" Failed Devices : %d\n", array.failed_disks); - printf(" Spare Devices : %d\n", array.spare_disks); + printf(" Failed Devices : %d\n", array.failed_disks); + printf(" Spare Devices : %d\n", array.spare_disks); } printf("\n"); if (array.level == 5) { str = map_num(r5layout, array.layout); - printf(" Layout : %s\n", str?str:"-unknown-"); + printf(" Layout : %s\n", str?str:"-unknown-"); } if (array.level == 6) { str = map_num(r6layout, array.layout); - printf(" Layout : %s\n", str?str:"-unknown-"); + printf(" Layout : %s\n", str?str:"-unknown-"); } if (array.level == 10) { - printf(" Layout :"); + printf(" Layout :"); print_r10_layout(array.layout); printf("\n"); } @@ -512,20 +513,35 @@ int Detail(char *dev, struct context *c) case 10: case 6: if (array.chunk_size) - printf(" Chunk Size : %dK\n\n", + printf(" Chunk Size : %dK\n\n", array.chunk_size/1024); break; case -1: - printf(" Rounding : %dK\n\n", array.chunk_size/1024); + printf(" Rounding : %dK\n\n", + array.chunk_size/1024); break; default: break; } + if (array.raid_disks) { + struct mdinfo *mdi = sysfs_read(fd, NULL, + GET_CONSISTENCY_POLICY); + if (mdi) { + char *policy = map_num(consistency_policies, + mdi->consistency_policy); + sysfs_free(mdi); + if (policy) + printf("Consistency Policy : %s\n\n", + policy); + } + } + if (e && e->percent >= 0) { static char *sync_action[] = { "Rebuild", "Resync", "Reshape", "Check"}; - printf(" %7s Status : %d%% complete\n", sync_action[e->resync], e->percent); + printf(" %7s Status : %d%% complete\n", + sync_action[e->resync], e->percent); is_rebuilding = 1; } free_mdstat(ms); @@ -533,39 +549,41 @@ int Detail(char *dev, struct context *c) if ((st && st->sb) && (info && info->reshape_active)) { #if 0 This is pretty boring - printf(" Reshape pos'n : %llu%s\n", (unsigned long long) info->reshape_progress<<9, + printf(" Reshape pos'n : %llu%s\n", + (unsigned long long) info->reshape_progress<<9, human_size((unsigned long long)info->reshape_progress<<9)); #endif if (info->delta_disks != 0) - printf(" Delta Devices : %d, (%d->%d)\n", + printf(" Delta Devices : %d, (%d->%d)\n", info->delta_disks, array.raid_disks - info->delta_disks, array.raid_disks); if (info->new_level != array.level) { str = map_num(pers, info->new_level); - printf(" New Level : %s\n", str?str:"-unknown-"); + printf(" New Level : %s\n", str?str:"-unknown-"); } if (info->new_level != array.level || info->new_layout != array.layout) { if (info->new_level == 5) { str = map_num(r5layout, info->new_layout); - printf(" New Layout : %s\n", + printf(" New Layout : %s\n", str?str:"-unknown-"); } if (info->new_level == 6) { str = map_num(r6layout, info->new_layout); - printf(" New Layout : %s\n", + printf(" New Layout : %s\n", str?str:"-unknown-"); } if (info->new_level == 10) { - printf(" New Layout : near=%d, %s=%d\n", + printf(" New Layout : near=%d, %s=%d\n", info->new_layout&255, (info->new_layout&0x10000)?"offset":"far", (info->new_layout>>8)&255); } } if (info->new_chunk != array.chunk_size) - printf(" New Chunksize : %dK\n", info->new_chunk/1024); + printf(" New Chunksize : %dK\n", + info->new_chunk/1024); printf("\n"); } else if (e && e->percent >= 0) printf("\n"); @@ -580,7 +598,7 @@ This is pretty boring DIR *dir = opendir("/sys/block"); struct dirent *de; - printf(" Member Arrays :"); + printf(" Member Arrays :"); while (dir && (de = readdir(dir)) != NULL) { char path[287]; diff --git a/super-ddf.c b/super-ddf.c index cdd16a4..c6037c1 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -1742,10 +1742,10 @@ static void detail_super_ddf(struct supertype *st, char *homehost) struct ddf_super *sb = st->sb; int cnt = be16_to_cpu(sb->virt->populated_vdes); - printf(" Container GUID : "); print_guid(sb->anchor.guid, 1); + printf(" Container GUID : "); print_guid(sb->anchor.guid, 1); printf("\n"); - printf(" Seq : %08x\n", be32_to_cpu(sb->active->seq)); - printf(" Virtual Disks : %d\n", cnt); + printf(" Seq : %08x\n", be32_to_cpu(sb->active->seq)); + printf(" Virtual Disks : %d\n", cnt); printf("\n"); } #endif diff --git a/super-intel.c b/super-intel.c index 5d0f131..2d92c8e 100644 --- a/super-intel.c +++ b/super-intel.c @@ -1987,7 +1987,7 @@ static void detail_super_imsm(struct supertype *st, char *homehost) getinfo_super_imsm(st, &info, NULL); fname_from_uuid(st, &info, nbuf, ':'); - printf("\n UUID : %s\n", nbuf + 5); + printf("\n UUID : %s\n", nbuf + 5); } static void brief_detail_super_imsm(struct supertype *st) diff --git a/super0.c b/super0.c index 7a555e3..10d9c40 100644 --- a/super0.c +++ b/super0.c @@ -353,7 +353,7 @@ err: static void detail_super0(struct supertype *st, char *homehost) { mdp_super_t *sb = st->sb; - printf(" UUID : "); + printf(" UUID : "); if (sb->minor_version >= 90) printf("%08x:%08x:%08x:%08x", sb->set_uuid0, sb->set_uuid1, sb->set_uuid2, sb->set_uuid3); @@ -367,7 +367,7 @@ static void detail_super0(struct supertype *st, char *homehost) if (memcmp(&sb->set_uuid2, hash, 8)==0) printf(" (local to host %s)", homehost); } - printf("\n Events : %d.%d\n\n", sb->events_hi, sb->events_lo); + printf("\n Events : %d.%d\n\n", sb->events_hi, sb->events_lo); } static void brief_detail_super0(struct supertype *st) diff --git a/super1.c b/super1.c index 4a0f041..8df17a1 100644 --- a/super1.c +++ b/super1.c @@ -780,19 +780,20 @@ static void detail_super1(struct supertype *st, char *homehost) int i; int l = homehost ? strlen(homehost) : 0; - printf(" Name : %.32s", sb->set_name); + printf(" Name : %.32s", sb->set_name); if (l > 0 && l < 32 && sb->set_name[l] == ':' && strncmp(sb->set_name, homehost, l) == 0) printf(" (local to host %s)", homehost); if (bms->nodes > 0 && (__le32_to_cpu(sb->feature_map) & MD_FEATURE_BITMAP_OFFSET)) - printf("\n Cluster Name : %-64s", bms->cluster_name); - printf("\n UUID : "); + printf("\n Cluster Name : %-64s", bms->cluster_name); + printf("\n UUID : "); for (i=0; i<16; i++) { if ((i&3)==0 && i != 0) printf(":"); printf("%02x", sb->set_uuid[i]); } - printf("\n Events : %llu\n\n", (unsigned long long)__le64_to_cpu(sb->events)); + printf("\n Events : %llu\n\n", + (unsigned long long)__le64_to_cpu(sb->events)); } static void brief_detail_super1(struct supertype *st) -- 2.10.2