From: levin li <xingke.lwp at taobao.com> It's useful to show the tag of every vdi, and the clone mark makes it easy to know whether the vdi is cloned from other. Signed-off-by: levin li <xingke.lwp at taobao.com> --- collie/vdi.c | 21 +++++++++++++-------- 1 files changed, 13 insertions(+), 8 deletions(-) diff --git a/collie/vdi.c b/collie/vdi.c index 8260eba..56266ec 100644 --- a/collie/vdi.c +++ b/collie/vdi.c @@ -65,7 +65,7 @@ static int parse_option_size(const char *value, uint64_t *ret) static void print_vdi_list(uint32_t vid, char *name, char *tag, uint32_t snapid, uint32_t flags, struct sheepdog_inode *i, void *data) { - int idx; + int idx, is_clone = 0; uint64_t my_objs, cow_objs; char vdi_size_str[16], my_objs_str[16], cow_objs_str[16]; time_t ti; @@ -100,19 +100,24 @@ static void print_vdi_list(uint32_t vid, char *name, char *tag, uint32_t snapid, size_to_str(my_objs * SD_DATA_OBJ_SIZE, my_objs_str, sizeof(my_objs_str)); size_to_str(cow_objs * SD_DATA_OBJ_SIZE, cow_objs_str, sizeof(cow_objs_str)); + if (i->snap_id == 1 && i->parent_vdi_id != 0) + is_clone = 1; + if (raw_output) { - printf("%c ", is_current(i) ? '=' : 's'); + printf("%c ", is_current(i) ? (is_clone ? 'c' : '=') : 's'); while (*name) { if (isspace(*name) || *name == '\\') putchar('\\'); putchar(*name++); } - printf(" %d %s %s %s %s %" PRIx32 "\n", snapid, - vdi_size_str, my_objs_str, cow_objs_str, dbuf, vid); + printf(" %d %s %s %s %s %" PRIx32 " %s\n", snapid, + vdi_size_str, my_objs_str, cow_objs_str, dbuf, vid, + i->tag); } else { - printf("%c %-8s %5d %7s %7s %7s %s %7" PRIx32 "\n", - is_current(i) ? ' ' : 's', name, snapid, - vdi_size_str, my_objs_str, cow_objs_str, dbuf, vid); + printf("%c %-8s %5d %7s %7s %7s %s %7" PRIx32 " %s\n", + is_current(i) ? (is_clone ? 'c' : ' ') : 's', + name, snapid, vdi_size_str, my_objs_str, cow_objs_str, + dbuf, vid, i->tag); } } @@ -297,7 +302,7 @@ static int vdi_list(int argc, char **argv) char *vdiname = argv[optind]; if (!raw_output) - printf(" Name Id Size Used Shared Creation time VDI id\n"); + printf(" Name Id Size Used Shared Creation time VDI id Tag\n"); if (vdiname) { struct get_vdi_info info; -- 1.7.1 |