* disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Add start_sector
parameter. Set its pointer target to 0. * disk/mdraid_linux.c (grub_mdraid_detect): Add start_sector parameter. Set its pointer target to 0 for 0.9 metadata, or to the `data_offset' value from the superblock for 1.x metadata. * disk/raid.c (grub_raid_read): Offset reads by the start sector of data on the device. (insert_array): Record the start sector of data on the device. (grub_raid_register): Pass start_sector parameters to grub_raid_list->detect and insert_array. * include/grub/raid.h (struct grub_raid_array): Add start_sector member. (struct grub_raid): Add start_sector parameter to `detect'.
This commit is contained in:
parent
139ab97dc3
commit
1c785436da
5 changed files with 40 additions and 8 deletions
|
@ -229,7 +229,8 @@ struct grub_raid_super_1x
|
|||
#define WriteMostly1 1 /* Mask for writemostly flag in above devflags. */
|
||||
|
||||
static grub_err_t
|
||||
grub_mdraid_detect (grub_disk_t disk, struct grub_raid_array *array)
|
||||
grub_mdraid_detect (grub_disk_t disk, struct grub_raid_array *array,
|
||||
grub_disk_addr_t *start_sector)
|
||||
{
|
||||
grub_disk_addr_t sector;
|
||||
grub_uint64_t size, sb_size;
|
||||
|
@ -328,6 +329,8 @@ superblock_0_90:
|
|||
uuid[2] = sb.set_uuid2;
|
||||
uuid[3] = sb.set_uuid3;
|
||||
|
||||
*start_sector = 0;
|
||||
|
||||
return 0;
|
||||
|
||||
superblock_1_x:
|
||||
|
@ -387,6 +390,8 @@ superblock_0_90:
|
|||
|
||||
grub_memcpy (array->uuid, sb_1x->set_uuid, 16);
|
||||
|
||||
*start_sector = sb_1x->data_offset;
|
||||
|
||||
grub_free (sb_1x);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue