[sheepdog] [PATCH 4/4] dog: add a new subcommand "dog vdi object dump-inode" for diagnosing inode object
Liu Yuan
namei.unix at gmail.com
Wed May 7 08:11:26 CEST 2014
On Wed, May 07, 2014 at 12:25:55AM +0900, Hitoshi Mitake wrote:
> This patch adds a tool for diagnosing inode object.
>
> How to use:
> $ dog vdi object dump-inode <path of inode file>
>
> Sample of output:
> name: test
> tag:
> create_time: 5368f57a0a96d0c0
> snap_ctime: 0
> vm_clock_nsec: 0
> copy_policy: 0
> store_policy: 0
> nr_copies: 3
> block_size_shift: 22
> snap_id: 1
> vdi_id: 7c2b25
> parent_vdi_id: 0
> btree_counter: 0
> data_vdi_id:
>
> Cc: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
> Cc: Valerio Pachera <sirio81 at gmail.com>
> Cc: Alessandro Bolgia <alessandro at extensys.it>
> Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
> ---
> dog/vdi.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 44 insertions(+)
>
> diff --git a/dog/vdi.c b/dog/vdi.c
> index 552b483..82f301e 100644
> --- a/dog/vdi.c
> +++ b/dog/vdi.c
> @@ -2269,11 +2269,55 @@ out:
> return ret;
> }
>
> +static int vdi_object_dump_inode(int argc, char **argv)
> +{
> + struct sd_inode *inode = xzalloc(sizeof(*inode));
> + int fd, ret;
> +
> + fd = open(argv[optind], O_RDONLY);
> + if (fd < 0) {
> + sd_err("fialed to open inode object file: %m");
> + return EXIT_FAILURE;
> + }
> +
> + ret = xread(fd, inode, sizeof(*inode));
> + if (ret != sizeof(*inode)) {
> + sd_err("fialed to read inode object file: %m");
need close(fd);
> + return EXIT_FAILURE;
> + }
> +
> + printf("name: %s\n", inode->name);
> + printf("tag: %s\n", inode->tag);
> + printf("create_time: %"PRIx64"\n", inode->create_time);
> + printf("snap_ctime: %"PRIx64"\n", inode->snap_ctime);
> + printf("vm_clock_nsec: %"PRIx64"\n", inode->vm_clock_nsec);
> + printf("copy_policy: %d\n", inode->copy_policy);
> + printf("store_policy: %d\n", inode->store_policy);
> + printf("nr_copies: %d\n", inode->nr_copies);
> + printf("block_size_shift: %d\n", inode->block_size_shift);
> + printf("snap_id: %"PRIu32"\n", inode->snap_id);
> + printf("vdi_id: %"PRIx32"\n", inode->vdi_id);
> + printf("parent_vdi_id: %"PRIx32"\n", inode->parent_vdi_id);
> + printf("btree_counter: %"PRIu32"\n", inode->btree_counter);
> +
> + printf("data_vdi_id:");
> + for (int i = 0; i < SD_INODE_DATA_INDEX; i++) {
> + if (!inode->data_vdi_id[i])
> + continue;
> +
> + printf("%d: %"PRIu32"\n", i, inode->data_vdi_id[i]);
> + }
> +
ditto.
Thanks
Yuan
More information about the sheepdog
mailing list