20
20
/* We only support RAID on Linux. */
22
#include <grub/emu/misc.h>
22
23
#include <grub/util/misc.h>
23
24
#include <grub/util/raid.h>
25
#include <grub/emu/getroot.h>
25
27
#include <string.h>
27
29
#include <sys/ioctl.h>
31
#include <sys/types.h>
30
33
#include <linux/types.h>
31
34
#include <linux/major.h>
32
35
#include <linux/raid/md_p.h>
33
36
#include <linux/raid/md_u.h>
36
grub_util_getdiskname (int major, int minor)
38
char *name = xmalloc (15);
40
if (major == LOOP_MAJOR)
41
sprintf (name, "/dev/loop%d", minor);
42
else if (major == IDE0_MAJOR)
43
sprintf (name, "/dev/hd%c", 'a' + minor / 64);
44
else if (major == IDE1_MAJOR)
45
sprintf (name, "/dev/hd%c", 'c' + minor / 64);
46
else if (major == IDE2_MAJOR)
47
sprintf (name, "/dev/hd%c", 'e' + minor / 64);
48
else if (major == IDE3_MAJOR)
49
sprintf (name, "/dev/hd%c", 'g' + minor / 64);
50
else if (major == SCSI_DISK0_MAJOR)
51
sprintf (name, "/dev/sd%c", 'a' + minor / 16);
53
grub_util_error ("unknown device number: %d, %d", major, minor);
59
39
grub_util_raid_getmembers (char *name)
100
80
if (disk.state & (1 << MD_DISK_ACTIVE))
102
devicelist[j] = grub_util_getdiskname (disk.major, disk.minor);
82
devicelist[j] = grub_find_device (NULL,
83
makedev (disk.major, disk.minor));