partitioned mdraid support (untested)
This commit is contained in:
parent
6383772c92
commit
4b07826647
3 changed files with 13 additions and 6 deletions
|
@ -639,7 +639,7 @@ grub_util_get_dev_abstraction (const char *os_dev __attribute__((unused)))
|
||||||
return GRUB_DEV_ABSTRACTION_LVM;
|
return GRUB_DEV_ABSTRACTION_LVM;
|
||||||
|
|
||||||
/* Check for RAID. */
|
/* Check for RAID. */
|
||||||
if (!strncmp (os_dev, "/dev/md", 7))
|
if (!strncmp (os_dev, "/dev/md", 7) && ! grub_util_device_is_mapped (os_dev))
|
||||||
return GRUB_DEV_ABSTRACTION_RAID;
|
return GRUB_DEV_ABSTRACTION_RAID;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -325,18 +325,23 @@ grub_util_biosdisk_open (const char *name, grub_disk_t disk)
|
||||||
return GRUB_ERR_NONE;
|
return GRUB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_DEVICE_MAPPER
|
int
|
||||||
static int
|
grub_util_device_is_mapped (const char *dev)
|
||||||
device_is_mapped (const char *dev)
|
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_DEVICE_MAPPER
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!grub_device_mapper_supported ())
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (stat (dev, &st) < 0)
|
if (stat (dev, &st) < 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return dm_is_dm_major (major (st.st_rdev));
|
return dm_is_dm_major (major (st.st_rdev));
|
||||||
}
|
#else
|
||||||
|
return 0;
|
||||||
#endif /* HAVE_DEVICE_MAPPER */
|
#endif /* HAVE_DEVICE_MAPPER */
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__CYGWIN__) || defined(HAVE_DIOCGDINFO)
|
#if defined(__linux__) || defined(__CYGWIN__) || defined(HAVE_DIOCGDINFO)
|
||||||
static grub_disk_addr_t
|
static grub_disk_addr_t
|
||||||
|
@ -351,7 +356,7 @@ find_partition_start (const char *dev)
|
||||||
# endif /* !defined(HAVE_DIOCGDINFO) */
|
# endif /* !defined(HAVE_DIOCGDINFO) */
|
||||||
|
|
||||||
# ifdef HAVE_DEVICE_MAPPER
|
# ifdef HAVE_DEVICE_MAPPER
|
||||||
if (grub_device_mapper_supported () && device_is_mapped (dev)) {
|
if (grub_util_device_is_mapped (dev)) {
|
||||||
struct dm_task *task = NULL;
|
struct dm_task *task = NULL;
|
||||||
grub_uint64_t start, length;
|
grub_uint64_t start, length;
|
||||||
char *target_type, *params, *space;
|
char *target_type, *params, *space;
|
||||||
|
|
|
@ -54,6 +54,8 @@ void grub_find_zpool_from_dir (const char *dir,
|
||||||
|
|
||||||
char *grub_make_system_path_relative_to_its_root (const char *path)
|
char *grub_make_system_path_relative_to_its_root (const char *path)
|
||||||
__attribute__ ((warn_unused_result));
|
__attribute__ ((warn_unused_result));
|
||||||
|
int
|
||||||
|
grub_util_device_is_mapped (const char *dev);
|
||||||
|
|
||||||
void * EXPORT_FUNC(xmalloc) (grub_size_t size) __attribute__ ((warn_unused_result));
|
void * EXPORT_FUNC(xmalloc) (grub_size_t size) __attribute__ ((warn_unused_result));
|
||||||
void * EXPORT_FUNC(xrealloc) (void *ptr, grub_size_t size) __attribute__ ((warn_unused_result));
|
void * EXPORT_FUNC(xrealloc) (void *ptr, grub_size_t size) __attribute__ ((warn_unused_result));
|
||||||
|
|
Loading…
Reference in a new issue