diff options
author | Neil Brown <neilb@suse.de> | 2008-05-15 16:48:15 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-05-15 16:48:15 +1000 |
commit | 5f8097beb973842287e5ac6e2d2644accb04cf25 (patch) | |
tree | eb4556a07770b003723871827df4ed3371cf0768 /util.c | |
parent | a322f70c41a1c381e19b1913b8ad2a8b77078800 (diff) |
more ddf stuff
Create a BVD in a DDF
Do not actually assemble it yet...
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -609,6 +609,23 @@ char *human_size_brief(long long bytes) } #endif +unsigned long long calc_array_size(int level, int raid_disks, int layout, + int chunksize, unsigned long long devsize) +{ + int data_disks = 0; + switch (level) { + case 0: data_disks = raid_disks; break; + case 1: data_disks = 1; break; + case 4: + case 5: data_disks = raid_disks - 1; break; + case 6: data_disks = raid_disks - 2; break; + case 10: data_disks = raid_disks / (layout & 255) / ((layout>>8)&255); + break; + } + devsize &= ~(unsigned long long)((chunksize>>9)-1); + return data_disks * devsize; +} + #if !defined(MDASSEMBLE) || defined(MDASSEMBLE) && defined(MDASSEMBLE_AUTO) int get_mdp_major(void) { |