* disk/mdraid_linux.c (grub_mdraid_detect): Fix calculation of 1.x

chunk size and disk size, which are already given as sector counts
as distinct from the 0.90 units.  Fetch the correct device number
from the role table instead of using the table index.
This commit is contained in:
Peter Henn 2010-06-01 18:40:03 +01:00 committed by Colin Watson
parent a9eff6b400
commit 3b97788878
2 changed files with 12 additions and 2 deletions

View file

@ -1,3 +1,10 @@
2009-12-15 Peter Henn <peter.henn@web.de>
* disk/mdraid_linux.c (grub_mdraid_detect): Fix calculation of 1.x
chunk size and disk size, which are already given as sector counts
as distinct from the 0.90 units. Fetch the correct device number
from the role table instead of using the table index.
2009-11-16 Felix Zielcke <fzielcke@z-51.de>
* disk/mdraid_linux.c (grub_mdraid_detect): Remove a wrong call

View file

@ -371,9 +371,12 @@ superblock_0_90:
array->level = grub_le_to_cpu32 (sb_1x->level);
array->layout = grub_le_to_cpu32 (sb_1x->layout);
array->total_devs = grub_le_to_cpu32 (sb_1x->raid_disks);
array->disk_size = grub_le_to_cpu64 (sb_1x->size) * 2;
array->disk_size = grub_le_to_cpu64 (sb_1x->size);
array->chunk_size = grub_le_to_cpu32 (sb_1x->chunksize);
array->index = grub_le_to_cpu32 (sb_1x->dev_number);
if (grub_le_to_cpu32 (sb_1x->dev_number) < grub_le_to_cpu32 (sb_1x->max_dev))
array->index = grub_le_to_cpu16 (sb_1x->dev_roles[grub_le_to_cpu32 (sb_1x->dev_number)]);
else
array->index = 0xffff; /* disk will be later not used! */
array->uuid_len = 16;
array->uuid = grub_malloc (16);
if (!array->uuid)