diff options
author | Pawel Baldysiak <pawel.baldysiak@intel.com> | 2014-07-18 17:01:27 +0200 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2014-07-21 16:50:19 +1000 |
commit | d31ad6439e2746d6d16d2e6eac771b138e5428c9 (patch) | |
tree | fb4776c4738eea0b7c2f292031e4a17f9a868284 | |
parent | 13ffbe89b6103c146c08eb1c9a70833306c8322b (diff) |
IMSM: move "validate_container_imsm" to be included in mdassemble
Commit 0c21b485e4beb7bcfe631412a231f7c1ea1067bc added new
function in imsm superswitch. This function should be
included in mdassemble.
Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r-- | super-intel.c | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/super-intel.c b/super-intel.c index b4efa72b..e28ac7d3 100644 --- a/super-intel.c +++ b/super-intel.c @@ -9048,6 +9048,47 @@ int open_backup_targets(struct mdinfo *info, int raid_disks, int *raid_fds, return 0; } +/******************************************************************************* + * Function: validate_container_imsm + * Description: This routine validates container after assemble, + * eg. if devices in container are under the same controller. + * + * Parameters: + * info : linked list with info about devices used in array + * Returns: + * 1 : HBA mismatch + * 0 : Success + ******************************************************************************/ +int validate_container_imsm(struct mdinfo *info) +{ + if (!check_env("IMSM_NO_PLATFORM")) { + struct sys_dev *idev; + struct mdinfo *dev; + char *hba_path = NULL; + char *dev_path = devt_to_devpath(makedev(info->disk.major, + info->disk.minor)); + + for (idev = find_intel_devices(); idev; idev = idev->next) { + if (strstr(dev_path, idev->path)) { + hba_path = idev->path; + break; + } + } + free(dev_path); + + if (hba_path) { + for (dev = info->next; dev; dev = dev->next) { + if (!devt_attached_to_hba(makedev(dev->disk.major, + dev->disk.minor), hba_path)) { + pr_err("WARNING - IMSM container assembled with disks under different HBAs!\n" + " This operation is not supported and can lead to data loss.\n"); + return 1; + } + } + } + } + return 0; +} #ifndef MDASSEMBLE /******************************************************************************* * Function: init_migr_record_imsm @@ -10524,47 +10565,6 @@ abort: return ret_val; } -/******************************************************************************* - * Function: validate_container_imsm - * Description: This routine validates container after assemble, - * eg. if devices in container are under the same controller. - * - * Parameters: - * info : linked list with info about devices used in array - * Returns: - * 1 : HBA mismatch - * 0 : Success - ******************************************************************************/ -int validate_container_imsm(struct mdinfo *info) -{ - if (!check_env("IMSM_NO_PLATFORM")) { - struct sys_dev *idev; - struct mdinfo *dev; - char *hba_path = NULL; - char *dev_path = devt_to_devpath(makedev(info->disk.major, - info->disk.minor)); - - for (idev = find_intel_devices(); idev; idev = idev->next) { - if (strstr(dev_path, idev->path)) { - hba_path = idev->path; - break; - } - } - free(dev_path); - - if (hba_path) { - for (dev = info->next; dev; dev = dev->next) { - if (!devt_attached_to_hba(makedev(dev->disk.major, - dev->disk.minor), hba_path)) { - pr_err("WARNING - IMSM container assembled with disks under different HBAs!\n" - " This operation is not supported and can lead to data loss.\n"); - return 1; - } - } - } - } - return 0; -} #endif /* MDASSEMBLE */ struct superswitch super_imsm = { |