Show all bitmaps while examining bitmap
This adds capability of exmining bitmaps corresponding to all nodes/slots on the device. Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com> Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
7716570e6d
commit
b98043a2f8
51
bitmap.c
51
bitmap.c
|
@ -260,7 +260,7 @@ int ExamineBitmap(char *filename, int brief, struct supertype *st)
|
|||
int rv = 1;
|
||||
char buf[64];
|
||||
int swap;
|
||||
int fd;
|
||||
int fd, i;
|
||||
__u32 uuid32[4];
|
||||
|
||||
fd = bitmap_file_open(filename, &st);
|
||||
|
@ -317,9 +317,13 @@ int ExamineBitmap(char *filename, int brief, struct supertype *st)
|
|||
uuid32[2],
|
||||
uuid32[3]);
|
||||
|
||||
printf(" Events : %llu\n", (unsigned long long)sb->events);
|
||||
printf(" Events Cleared : %llu\n", (unsigned long long)sb->events_cleared);
|
||||
printf(" State : %s\n", bitmap_state(sb->state));
|
||||
if (sb->nodes == 0) {
|
||||
printf(" Events : %llu\n", (unsigned long long)sb->events);
|
||||
printf(" Events Cleared : %llu\n", (unsigned long long)sb->events_cleared);
|
||||
printf(" State : %s\n", bitmap_state(sb->state));
|
||||
|
||||
}
|
||||
|
||||
printf(" Chunksize : %s\n", human_chunksize(sb->chunksize));
|
||||
printf(" Daemon : %ds flush period\n", sb->daemon_sleep);
|
||||
if (sb->write_behind)
|
||||
|
@ -329,11 +333,40 @@ int ExamineBitmap(char *filename, int brief, struct supertype *st)
|
|||
printf(" Write Mode : %s\n", buf);
|
||||
printf(" Sync Size : %llu%s\n", (unsigned long long)sb->sync_size/2,
|
||||
human_size(sb->sync_size * 512));
|
||||
if (brief)
|
||||
goto free_info;
|
||||
printf(" Bitmap : %llu bits (chunks), %llu dirty (%2.1f%%)\n",
|
||||
info->total_bits, info->dirty_bits,
|
||||
100.0 * info->dirty_bits / (info->total_bits?:1));
|
||||
|
||||
if (sb->nodes == 0) {
|
||||
if (brief)
|
||||
goto free_info;
|
||||
printf(" Bitmap : %llu bits (chunks), %llu dirty (%2.1f%%)\n",
|
||||
info->total_bits, info->dirty_bits,
|
||||
100.0 * info->dirty_bits / (info->total_bits?:1));
|
||||
} else {
|
||||
printf(" Cluster nodes : %d\n", sb->nodes);
|
||||
printf(" Cluster name : %64s\n", sb->cluster_name);
|
||||
for (i = 0; i < (int)sb->nodes; i++) {
|
||||
if (i) {
|
||||
free(info);
|
||||
info = bitmap_fd_read(fd, brief);
|
||||
sb = &info->sb;
|
||||
}
|
||||
if (sb->magic != BITMAP_MAGIC)
|
||||
pr_err("invalid bitmap magic 0x%x, the bitmap file appears to be corrupted\n", sb->magic);
|
||||
|
||||
printf(" Node Slot : %d\n", i);
|
||||
printf(" Events : %llu\n",
|
||||
(unsigned long long)sb->events);
|
||||
printf(" Events Cleared : %llu\n",
|
||||
(unsigned long long)sb->events_cleared);
|
||||
printf(" State : %s\n", bitmap_state(sb->state));
|
||||
if (brief)
|
||||
continue;
|
||||
printf(" Bitmap : %llu bits (chunks), %llu dirty (%2.1f%%)\n",
|
||||
info->total_bits, info->dirty_bits,
|
||||
100.0 * info->dirty_bits / (info->total_bits?:1));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
free_info:
|
||||
free(info);
|
||||
return rv;
|
||||
|
|
Loading…
Reference in New Issue