[Sheepdog] [PATCH] show vdi tag and clone mark in the output of 'collie vdi list'
Liu Yuan
namei.unix at gmail.com
Tue Apr 17 09:22:10 CEST 2012
On 04/17/2012 02:09 PM, Li Wenpeng wrote:
> 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;
Applied,thanks
Yuan
More information about the sheepdog
mailing list