[sheepdog] [PATCH v3 0/5] replace structure of inode->data_vdi_id[] from array to b-tree

Liu Yuan namei.unix at gmail.com
Fri Oct 25 09:35:48 CEST 2013


On Thu, Oct 24, 2013 at 05:46:17PM +0800, Robin Dong wrote:
> Hi all,
> 
> The size of vdi can only reach 4TB beacause the inode->data_vdi_id[] can only
> support 1 million objects. But 4TB is too small for storage application
> such as NAS and cloud-disk therefore we need to change the array of 'data_vdi_id' to
> b-tree.
> 
> This patchset add B-tree structure into sd_inode. It support just two levels
> (one root-node and many leaf-nodes) and after this the size of vdi could reach about
> (4MB / sizeof(sd_extent_header) * (4MB / sizeof(sd_extent)) * 4MB which is about 680PB
> in theory.
> 
> Currently the vdi size can raise to 16PB because the size of oid is just 32-bits, but
> it is certainly enough for many storage requirement.
> 
> v2 --> v3 changes:
> 	1. move "btree_counter" after inode->child_vdi_id[]
> 	2. add new interface to write inode meta data
> 	3. change the names of some MACRO
> 
> v1 --> v2 changes:
> 	1. fix the problem of create 16PB vdi and mkfs.xfs
> 	2. add comment and illustration to explain how B-tree works
> 

There is still something must-to-do before merge even for the first basic
version

1. work with object cache (extend cache id to uint64_t)
2. work with some inode operations like 'vdi list', currently after write some
   data in the vdi, 'vdi list' doesn't show correct output and for 'vdi check',
   which can't check hyper volume's bnodes at all.

3. pass all the tests in tests/functional/
4. add a new test to test hyper volume function

Thanks,
Yuan



More information about the sheepdog mailing list