83
grub_raid_iterate (int (*hook) (const char *name))
83
grub_raid_iterate (int (*hook) (const char *name, void *closure),
85
86
struct grub_raid_array *array;
87
88
for (array = array_list; array != NULL; array = array->next)
89
90
if (grub_is_array_readable (array))
90
if (hook (array->name))
91
if (hook (array->name, closure))
626
grub_raid_register_hook (const char *name, void *closure UNUSED)
629
struct grub_raid_array array;
631
grub_dprintf ("raid", "Scanning for RAID devices on disk %s\n", name);
633
disk = grub_disk_open (name);
637
if ((disk->total_sectors != GRUB_ULONG_MAX) &&
638
(! grub_raid_list->detect (disk, &array)) &&
639
(! insert_array (disk, &array, grub_raid_list->name)))
642
/* This error usually means it's not raid, no need to display
644
if (grub_errno != GRUB_ERR_OUT_OF_RANGE)
647
grub_errno = GRUB_ERR_NONE;
649
grub_disk_close (disk);
625
655
grub_raid_register (grub_raid_t raid)
627
auto int hook (const char *name);
628
int hook (const char *name)
631
struct grub_raid_array array;
633
grub_dprintf ("raid", "Scanning for RAID devices on disk %s\n", name);
635
disk = grub_disk_open (name);
639
if ((disk->total_sectors != GRUB_ULONG_MAX) &&
640
(! grub_raid_list->detect (disk, &array)) &&
641
(! insert_array (disk, &array, grub_raid_list->name)))
644
/* This error usually means it's not raid, no need to display
646
if (grub_errno != GRUB_ERR_OUT_OF_RANGE)
649
grub_errno = GRUB_ERR_NONE;
651
grub_disk_close (disk);
656
657
raid->next = grub_raid_list;
657
658
grub_raid_list = raid;
658
grub_device_iterate (&hook);
659
grub_device_iterate (grub_raid_register_hook, 0);