Nova FC and iSCSI volume drivers use same 'iscsi_use_multipath' conf entry for multipath

Bug #1555666 reported by Pradeep Kumar on 2016-03-10
This bug report is a duplicate of:  Bug #1593860: iscsi_use_multipath confusing. Edit Remove
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Low
Prateek Arora

Bug Description

Version:
------------
commit f4dd117a81c68d9fb600dff456e1171841758b43
Merge: 09fc0af 52ea564
Author: Jenkins <email address hidden>
Date: Thu Mar 10 12:35:11 2016 +0000

    Merge "Use generic wrapper for cinder exceptions"

Issue:
--------

Both FC & iSCSI drivers decide on multipath based on the 'iscsi_use_multipath' config parameter. This is ambiguous and we need to have different conf entries for iSCSI and FC, which will enable user to selectively use a feature

Code Block:
-----------------

FC:

class LibvirtFibreChannelVolumeDriver(libvirt_volume.LibvirtBaseVolumeDriver):
    """Driver to attach Fibre Channel Network volumes to libvirt."""

    def __init__(self, connection):
        super(LibvirtFibreChannelVolumeDriver,
              self).__init__(connection, is_block_dev=False)

        # Call the factory here so we can support
        # more than x86 architectures.
        self.connector = connector.InitiatorConnector.factory(
            'FIBRE_CHANNEL', utils.get_root_helper(),
            use_multipath=CONF.libvirt.iscsi_use_multipath,
            device_scan_attempts=CONF.libvirt.num_iscsi_scan_tries)

iSCSI:

class LibvirtISCSIVolumeDriver(libvirt_volume.LibvirtBaseVolumeDriver):
    """Driver to attach Network volumes to libvirt."""

    def __init__(self, connection):
        super(LibvirtISCSIVolumeDriver, self).__init__(connection,
                                                       is_block_dev=True)

        # Call the factory here so we can support
        # more than x86 architectures.
        self.connector = connector.InitiatorConnector.factory(
            'ISCSI', utils.get_root_helper(),
            use_multipath=CONF.libvirt.iscsi_use_multipath,
            device_scan_attempts=CONF.libvirt.num_iscsi_scan_tries,
            transport=self._get_transport())

LibvirtDriver:

    def get_volume_connector(self, instance):
        root_helper = utils.get_root_helper()
        return connector.get_connector_properties(
            root_helper, CONF.my_block_storage_ip,
            CONF.libvirt.iscsi_use_multipath,
            enforce_multipath=True,
            host=CONF.host)

Changed in nova:
assignee: nobody → Pradeep Kumar (pradeep-av)
Matt Riedemann (mriedem) wrote :

This is borderline opinion. The same could be said about the num_iscsi_scan_tries option which is re-used between 5 different libvirt volume drivers.

tags: added: config libvirt volumes
Changed in nova:
status: New → Confirmed
importance: Undecided → Low
Pradeep Kumar (pradeep-av) wrote :

The issue we had was that without enabling 'iscsi_use_multipath' we tried 3PAR FC (Since the Doc mentions that the parameter is related to iscsi). And the resulting attached volume did not use multipath while attaching to the vm, as you can see below:

    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source dev='/dev/disk/by-path/pci-0000:08:00.0-fc-0x22110002ac0093f4-lun-0'/>
      <backingStore/>
      <target dev='vdb' bus='virtio'/>
      <serial>8aec043c-46b8-4491-82a4-2d918d6ca9ff</serial>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>

After enabling it we see:

    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source dev='/dev/disk/by-id/dm-uuid-mpath-360002ac00000000000001788000093f4'/>
      <backingStore/>
      <target dev='vdb' bus='virtio'/>
      <serial>8aec043c-46b8-4491-82a4-2d918d6ca9ff</serial>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>

Sarafraj Singh (sarafraj-singh) wrote :

Pradeep,
Are you working on the fix? Please change status to Inprogress if you are, otherwise change Assigned to ->nobody.

Matt Riedemann (mriedem) wrote :

Pradeep, I think it would be fine to add more specific options for the volume backends, which could default to a global (iscsi_use_multipath if the specific one isn't used), I'm not saying this bug is invalid, just that it's more of an opinion / low priority issue than a bug like 'this isn't working'.

Changed in nova:
assignee: Pradeep Kumar (pradeep-av) → nobody
Prateek Arora (parora) on 2016-04-21
Changed in nova:
assignee: nobody → Prateek Arora (parora)
Prateek Arora (parora) wrote :

I think this is an openstack-chef issue and not of nova.

Pradeep Kumar (pradeep-av) wrote :

@Prateek, The code block mentioned above is of nova. As Matt suggested it is a more generic issue with configuration options

Prateek Arora (parora) wrote :

Pradeep, just looked into it a bit more, agreed that it is nova and would work to get a new parameter for the FC

Fix proposed to branch: master
Review: https://review.openstack.org/310679

Changed in nova:
status: Confirmed → In Progress

Change abandoned by Prateek Arora (<email address hidden>) on branch: master
Review: https://review.openstack.org/310679
Reason: This patch has been merged as https://review.openstack.org/#/c/331357/4

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers