> I notice now that
> cls.mpath_args(cls.mpath_diskargs(target_disks + extra_disks + nvme_disks)
> is not really the same as waht we did before, which was effectively:
> cls.mpath_diskargs(target_disks) + cls.mpath_diskargs(extra_disks) +
> cls.mpath_diskargs(nvme_disks)
>
> the difference is really just in order, effectively
> new: [a,b,c] * 2 = [a, b, c, a, b, c]
> where before we had
> [a] * 2 + b * 2 + c * 2 = [a, a, b, b, c, c]
>
> it all should really come out the same just different order of -drive
> options/-device options.
You're right that the order is different, but I think you've got them backwards:
For the multi-list-join path:
cls.mpath_disks([a, b] + [c, d] + [e, f])
We used to get:
[a, b, a, b, c, d, c, d, e, f, e, f]
and with this new code we'll get:
[a, a, b, b, c, c, d, d, e, e, f, f]
Since we iterate over the combined list and multiply out each element of the list times the multiplier.
I *think* we'll be fine, specifically in the multipath case, the devices are paired by their serial number/model not by their placement on the PCI bus.
> I notice now that args(cls. mpath_diskargs( target_ disks + extra_disks + nvme_disks) diskargs( target_ disks) + cls.mpath_ diskargs( extra_disks) + diskargs( nvme_disks)
> cls.mpath_
> is not really the same as waht we did before, which was effectively:
> cls.mpath_
> cls.mpath_
>
> the difference is really just in order, effectively
> new: [a,b,c] * 2 = [a, b, c, a, b, c]
> where before we had
> [a] * 2 + b * 2 + c * 2 = [a, a, b, b, c, c]
>
> it all should really come out the same just different order of -drive
> options/-device options.
You're right that the order is different, but I think you've got them backwards:
For the multi-list-join path:
cls.mpath_disks([a, b] + [c, d] + [e, f])
We used to get:
[a, b, a, b, c, d, c, d, e, f, e, f]
and with this new code we'll get:
[a, a, b, b, c, c, d, d, e, e, f, f]
Since we iterate over the combined list and multiply out each element of the list times the multiplier.
I *think* we'll be fine, specifically in the multipath case, the devices are paired by their serial number/model not by their placement on the PCI bus.