Attaching disks to multiple controllers of the same type has been allowed so far. Now spanning between multiple controllers is disallowed at all by IMSM metadata. Signed-off-by: Marcin Tomczak <marcin.tomczak@xxxxxxxxx> Reviewed-by: Lukasz Dorau <lukasz.dorau@xxxxxxxxx> --- super-intel.c | 25 ++++++++----------------- 1 files changed, 8 insertions(+), 17 deletions(-) diff --git a/super-intel.c b/super-intel.c index 544cb05..db437b9 100644 --- a/super-intel.c +++ b/super-intel.c @@ -558,20 +558,11 @@ static int attach_hba_to_super(struct intel_super *super, struct sys_dev *device if (super->hba == NULL) { super->hba = alloc_intel_hba(device); return 1; - } - - hba = super->hba; - /* Intel metadata allows for all disks attached to the same type HBA. - * Do not sypport odf HBA types mixing - */ - if (device->type != hba->type) + } else + /* IMSM metadata disallows to attach disks to multiple + * controllers. + */ return 2; - - while (hba->next) - hba = hba->next; - - hba->next = alloc_intel_hba(device); - return 1; } static struct sys_dev* find_disk_attached_hba(int fd, const char *devname) @@ -3018,11 +3009,11 @@ static int compare_super_imsm(struct supertype *st, struct supertype *tst) */ if (!check_env("IMSM_NO_PLATFORM")) { if (!first->hba || !sec->hba || - (first->hba->type != sec->hba->type)) { + strcmp(first->hba->path, sec->hba->path) != 0) { fprintf(stderr, "HBAs of devices does not match %s != %s\n", - first->hba ? get_sys_dev_type(first->hba->type) : NULL, - sec->hba ? get_sys_dev_type(sec->hba->type) : NULL); + first->hba ? first->hba->path : NULL, + sec->hba ? sec->hba->path : NULL); return 3; } } @@ -3800,7 +3791,7 @@ static int find_intel_hba_capability(int fd, struct intel_super *super, char *de } fprintf(stderr, ").\n" - " Mixing devices attached to different controllers " + " Mixing devices attached to multiple controllers " "is not allowed.\n"); } free_sys_dev(&hba_name); --------------------------------------------------------------------- Intel Technology Poland sp. z o.o. z siedziba w Gdansku ul. Slowackiego 173 80-298 Gdansk Sad Rejonowy Gdansk Polnoc w Gdansku, VII Wydzial Gospodarczy Krajowego Rejestru Sadowego, numer KRS 101882 NIP 957-07-52-316 Kapital zakladowy 200.000 zl This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ��.n��������+%������w��{.n�����{����w��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f