On 04/15/2016 02:26 PM, Nitesh Konkar wrote:
On Fri, Apr 15, 2016 at 8:08 PM, John Ferlan
<jferlan(a)redhat.com> wrote:
Please do not remove libvir-list from a response. I've replaced it.
Someone may have a different idea.
>
>
> On 04/15/2016 10:11 AM, Nitesh Konkar wrote:
>> Thanks John for the reply.
>>
>> On Fri, Apr 15, 2016 at 5:08 PM, John Ferlan <jferlan(a)redhat.com> wrote:
>>
>>>
>>>
>>> On 04/07/2016 05:09 AM, Nitesh Konkar wrote:
>>>> HBA will get treated as vHBA if not returned
>>>> after detecting vhba_parent format.
>>>>
>>>> Signed-off-by: Nitesh Konkar <nitkon12(a)linux.vnet.ibm.com>
>>>> ---
>>>> Before Patch:
>>>> # virsh pool-destroy poolhba_name
>>>> error: Failed to destroy pool poolhba_name
>>>> error: internal error: Invalid adapter name 'pci_000x_0x_00_x'
for SCSI
>>> pool
>>>>
>>>> # virsh nodedev-dumpxml scsi_host2
>>>> <device>
>>>> <name>scsi_host2</name>
>>>> <path>xxxx</path>
>>>> <parent>pci_000x_0x_00_x</parent>
>>>> <capability type='scsi_host'>
>>>> <host>2</host>
>>>> ...
>>>> ...
>>>> <capability type='vport_ops'>
>>>> <max_vports>255</max_vports>
>>>> <vports>0</vports>
>>>> </capability>
>>>> </capability>
>>>> </device>
>>>>
>>>> After Patch:
>>>> # virsh pool-destroy poolhba_name
>>>> Pool poolhba_name destroyed
>>>>
>>>> src/storage/storage_backend_scsi.c | 5 +++++
>>>> 1 file changed, 5 insertions(+)
>>>>
>>>
>>> Can you provide the pool-dumpxml for poolhba_name? Can you provide the
>>> nodedev-dumpxml of the 'scsi_host#' that was created for the vHBA
pool?
>>>
>>>
>> This patch is to destroy a pool created out from a Physical HBA.
> Apologies,
>> if the
>> commit message was misleading.
>>
>> # virsh pool-dumpxml poolhba_name
>> <pool type='scsi'>
>> <name>poolhba_name</name>
>> <uuid>60d74134-0c18-4d4f-9305-24d96ce1a1b6</uuid>
>> <capacity unit='bytes'>268435456000</capacity>
>> <allocation unit='bytes'>268435456000</allocation>
>> <available unit='bytes'>0</available>
>> <source>
>> <adapter type='fc_host' managed='yes'
wwnn='20000120fa8f1271'
>> wwpn='10000090fa8f1271'/>
>> </source>
>> <target>
>> <path>/dev/disk/by-id</path>
>> <permissions>
>> <mode>0700</mode>
>> <owner>0</owner>
>> <group>0</group>
>> </permissions>
>> </target>
>> </pool>
>>
>
> OK, maybe I wasn't clear enough... Which 'scsi_host#' is *this* pool
> associated with. Prior to creating it, do a virsh nodedev-list
> scsi_host. Then create it. Then generate the list again.
>
> The pool poolhba_name is associated with scsi_host2.
#virsh list --all
Id Name State
----------------------------------------------------
# virsh nodedev-list scsi_host
scsi_host0
scsi_host1
scsi_host2
scsi_host3
scsi_host4
#virsh pool-list --all
Name State Autostart
-------------------------------------------
poolhba_name active yes
# virsh nodedev-dumpxml scsi_host2
<device>
<name>scsi_host2</name>
<path>/sys/devices/pci0001:00/0001:00:00.0/0001:01:00.0/0001:02:09.0/0001:09:00.1/host2</path>
<parent>pci_0001_09_00_1</parent>
<capability type='scsi_host'>
<host>2</host>
<unique_id>1</unique_id>
<capability type='fc_host'>
<wwnn>20000120fa8f1271</wwnn>
<wwpn>10000090fa8f1271</wwpn>
<fabric_wwn>100050eb1a99d430</fabric_wwn>
</capability>
<capability type='vport_ops'>
<max_vports>255</max_vports>
<vports>1</vports>
</capability>
</capability>
</device>
Or of course since you cannot delete the poolvhba_name, go through the
> various scsi_host#'s on your host looking for the one with the match
> wwwn/wwpn - then do the nodedev-dumpxml of that. For you example you
> are looking for the scsi_host# with the matching wwnn='20000120fa8f1271'
> and wwpn='10000090fa8f1271'.
>
> That one is supposed to list 'scsi_host2' in the <parent> field as my
> 'scsi_host19' does below.
>
> # virsh pool-list --all
Name State Autostart
-------------------------------------------
poolhba_name active yes
# virsh nodedev-dumpxml scsi_host2
<device>
<name>scsi_host2</name>
<path>/sys/devices/pci0001:00/0001:00:00.0/0001:01:00.0/0001:02:09.0/0001:09:00.1/host2</path>
<parent>pci_0001_09_00_1</parent>
<capability type='scsi_host'>
<host>2</host>
<unique_id>1</unique_id>
<capability type='fc_host'>
<wwnn>20000120fa8f1271</wwnn>
<wwpn>10000090fa8f1271</wwpn>
<fabric_wwn>100050eb1a99d430</fabric_wwn>
</capability>
<capability type='vport_ops'>
<max_vports>255</max_vports>
<vports>1</vports>
</capability>
</capability>
</device>
Here the parent field has "pci_0001_09_00_1" and not 'scsi_host2' .
This is
why it errors out.
# virsh pool-destroy poolhba_name
2016-04-15 18:21:07.054+0000: 113209: error : virGetSCSIHostNumber:1922 :
internal error: Invalid adapter name 'pci_0001_09_00_1' for SCSI pool
error: Failed to destroy pool poolhba_name
error: internal error: Invalid adapter name 'pci_0001_09_00_1' for SCSI pool
Am I missing something?
Perhaps - I think I explained how the vHBA is created before... Look at
the code for createVport() - see the 'parent_hoststr' description.
When you did a pool-{create|define} for the "poolhba_name", you provided
some XML which would search the existing 'scsi_host#' for one that's
capable of supporting a vHBA.
What that create is supposed to do (at least it does it on the systems I
used) is create another 'scsi_host#'. That scsi_host# is then the vHBA -
it's *parent* is supposed to be 'scsi_host2' - see my example. On your
host perhaps scsi_host3 or scsi_host4. Do either one of those two have
the wwnn/wwpn that's in your poolhba_name:
<adapter type='fc_host' managed='yes' wwnn='20000120fa8f1271'
wwpn='10000090fa8f1271'/>
I'm really not quite sure what's happening on your host/environment.
Perhaps you could follow how createVport generates things and report
back. You can always 'create' another vHBA using a different wwnn/wwpn
John