+2008-02-08 Robert Millan <rmh@aybabtu.com>
+
+ * include/grub/raid.h (struct grub_raid_array): Change type of `device'
+ to a grub_disk_t array.
+ * disk/raid.c (grub_raid_read): Replace `device[x].disk' accesses with
+ `device[x]'.
+ (grub_raid_scan_device): Replace `device[x].name' accesses with
+ `device[x]->name'. Simplify initialization of `array->device[x]'.
+
2008-02-08 Robert Millan <rmh@aybabtu.com>
* disk/raid.c (grub_raid_open, grub_raid_scan_device): Add a few
{
grub_uint32_t i;
- err = grub_disk_read (array->device[disknr].disk, read_sector, 0,
+ err = grub_disk_read (array->device[disknr], read_sector, 0,
read_size << GRUB_DISK_SECTOR_BITS, buf);
if (err)
break;
for (i = 0; i < array->total_devs; i++)
{
- if (array->device[i].disk)
+ if (array->device[i])
{
- err = grub_disk_read (array->device[i].disk, sector, 0,
+ err = grub_disk_read (array->device[i], sector, 0,
size << GRUB_DISK_SECTOR_BITS, buf);
if (!err)
{
grub_uint32_t i;
- if (array->device[disknr].disk)
- err = grub_disk_read (array->device[disknr].disk, read_sector, 0,
+ if (array->device[disknr])
+ err = grub_disk_read (array->device[disknr], read_sector, 0,
read_size << GRUB_DISK_SECTOR_BITS, buf);
/* If an error occurs when we already have an degraded
if (err && ((array->total_devs - 1) == array->nr_devs))
break;
- if (err || ! array->device[disknr].disk)
+ if (err || ! array->device[disknr])
{
/* Either an error occured or the disk is not
available. We have to compute this block from the
if (j != (unsigned int) disknr)
{
- err = grub_disk_read (array->device[j].disk, read_sector,
+ err = grub_disk_read (array->device[j], read_sector,
0, buf_size, buf2);
if (err)
return err;
return 0;
}
- if (array->device[sb.this_disk.number].name != 0)
+ if (array->device[sb.this_disk.number]->name != 0)
{
/* We found multiple devices with the same number. Again,
this shouldn't happen.*/
}
/* Add the device to the array. */
- array->device[sb.this_disk.number].name = grub_strdup (name);
- array->device[sb.this_disk.number].disk = grub_disk_open (name);
+ array->device[sb.this_disk.number] = grub_disk_open (name);
- if (! array->device[sb.this_disk.number].name
- || ! array->device[sb.this_disk.number].disk)
+ if (! array->device[sb.this_disk.number])
{
- grub_free (array->device[sb.this_disk.number].name);
-
/* Remove array from the list if we have just added it. */
if (array->nr_devs == 0)
{