At Fri, 26 Nov 2010 14:47:09 +0530,
Narendra Prasad Madanapalli wrote:
> 
> Hi,
> 
> I am trying to understand how sheepdog volumes are strored and what
> data structures are used for storage.
> 
> Sheepdog inode is declared in include/sheepdog_proto.h
> 

Here is the explanation of fields of this structure.

> struct sheepdog_inode {
>       char name[SD_MAX_VDI_LEN];

name of this vdi

>       char tag[SD_MAX_VDI_TAG_LEN];

snapshot tag

If this vdi is not snapshot, tag should be filled with zero.

>       uint64_t ctime;

time this vdi is created

>       uint64_t snap_ctime;

time this vdi is snapshotted

If this vdi is not snapshot, snap_ctime should be zero.

>       uint64_t vm_clock_nsec;

vm clock relative to boot

This is used to store live snapshot information.

>       uint64_t vdi_size;

size of this vdi

>       uint64_t vm_state_size;

vm state info size

This is used to store live snapshot information.

>       uint16_t copy_policy;

policy to replicate objects

This is reserved for future use.

>       uint8_t  nr_copies;

the number of redundancy

>       uint8_t  block_size_shift;

number to calculate data object size

The size of the data object is (1 << block_size_shift).

>       uint32_t snap_id;

snapshot id of this vdi

>       uint32_t vdi_id;

vdi id of this vdi

>       uint32_t parent_vdi_id;
vdi id of the parent vdi
>       uint32_t child_vdi_id[MAX_CHILDREN];
vdi ids of the children vdis

You can see a snapshot tree with 'collie vdi tree'.

>       uint32_t data_vdi_id[MAX_DATA_OBJS];

list of vdi id which is used to calculate data object id

> };
> 
> And the function create_vdi_obj() (in sheep/vdi.c) creates vdi object.
> This function defines three static variables new, base, cur of type
> 'struct sheepdog_inode'
> 
> Can anyone point to me the documentation on the above structure and variables?

'new', 'base', and 'cur' variables store the vdi info of the following:

new:  vdi which is created in the function
base: base vdi (used when cloning volumes)
cur:  current vdi (this vdi will become the snapshot vdi)


> Where super object is stored and the other inodes are linked with super 
> object?

We don't use a super object now.  Sheepdog gathers vdi info from all
nodes when it starts, so there is no object to store all vdis info.


Thanks,

Kazutaka
-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to