IMSM: Add warning message when x8-type device is used

This patch adds the warning message when x8-type device
is used with IMSM metadata. x8 device is a special
NVMe drive - two of them on a single PCIe card.
This card could be a single point of failure for
RAID levels different than RAID0. x8 devices have
serial number ending with "-A/-B" or "-1/-2".

Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
This commit is contained in:
Pawel Baldysiak 2016-10-24 10:19:52 +02:00 committed by Jes Sorensen
parent 12fe93e913
commit 20bee0f8db
1 changed files with 44 additions and 0 deletions

View File

@ -5137,9 +5137,53 @@ static int add_to_super_imsm(struct supertype *st, mdu_disk_info_t *dk,
rv = imsm_read_serial(fd, devname, dd->serial);
if (rv) {
pr_err("failed to retrieve scsi serial, aborting\n");
if (dd->devname)
free(dd->devname);
free(dd);
abort();
}
if (super->hba && ((super->hba->type == SYS_DEV_NVME) ||
(super->hba->type == SYS_DEV_VMD))) {
int i;
char *devpath = diskfd_to_devpath(fd);
char controller_path[PATH_MAX];
if (!devpath) {
pr_err("failed to get devpath, aborting\n");
if (dd->devname)
free(dd->devname);
free(dd);
return 1;
}
snprintf(controller_path, PATH_MAX-1, "%s/device", devpath);
free(devpath);
if (devpath_to_vendor(controller_path) == 0x8086) {
/*
* If Intel's NVMe drive has serial ended with
* "-A","-B","-1" or "-2" it means that this is "x8"
* device (double drive on single PCIe card).
* User should be warned about potential data loss.
*/
for (i = MAX_RAID_SERIAL_LEN-1; i > 0; i--) {
/* Skip empty character at the end */
if (dd->serial[i] == 0)
continue;
if (((dd->serial[i] == 'A') ||
(dd->serial[i] == 'B') ||
(dd->serial[i] == '1') ||
(dd->serial[i] == '2')) &&
(dd->serial[i-1] == '-'))
pr_err("\tThe action you are about to take may put your data at risk.\n"
"\tPlease note that x8 devices may consist of two separate x4 devices "
"located on a single PCIe port.\n"
"\tRAID 0 is the only supported configuration for this type of x8 device.\n");
break;
}
}
}
get_dev_size(fd, NULL, &size);
/* clear migr_rec when adding disk to container */