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

Bug #1555666 reported by Pradeep Kumar
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)
In Progress
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)
Revision history for this message
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
Revision history for this message
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>

Revision history for this message
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.

Revision history for this message
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)
Changed in nova:
assignee: nobody → Prateek Arora (parora)
Revision history for this message
Prateek Arora (parora) wrote :

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

Revision history for this message
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

Revision history for this message
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

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to nova (master)

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

Changed in nova:
status: Confirmed → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on nova (master)

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  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.