On 04/15/2016 02:26 PM, Nitesh Konkar wrote: > On Fri, Apr 15, 2016 at 8:08 PM, John Ferlan <jferlan@xxxxxxxxxx> 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@xxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxx> >>>>> --- >>>>> 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list