[libvirt] [PATCH]Fix vPort Manage of FC vHBA creation
Ján Tomko
jtomko at redhat.com
Fri Jun 28 10:28:25 UTC 2013
On 06/28/2013 11:39 AM, Daniel P. Berrange wrote:
> On Fri, Jun 28, 2013 at 05:30:14PM +0800, Dennis Chen wrote:
>> On 06/28/2013 04:39 PM, Ján Tomko wrote:
>>> On 06/28/2013 03:22 AM, Dennis Chen wrote:
>>>> When create a virtual FC HBA with virsh/libvirt API, an error message will be
>>>> returned:"error: Node device not found",
>>>> also the 'nodedev-dumpxml' shows wrong information of wwpn & wwnn for the new
>>>> created device.
>>>>
>>>> Signed-off-by:xschen at tnsoft.com.cn
>>>> ---
>>>> src/util/virutil.c | 4 ++--
>>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/src/util/virutil.c b/src/util/virutil.c
>>>> index 6fa0212e..569d035 100644
>>>> --- a/src/util/virutil.c
>>>> +++ b/src/util/virutil.c
>>>> @@ -1792,8 +1792,8 @@ virManageVport(const int parent_host,
>>>> if (virAsprintf(&vport_name,
>>>> "%s:%s",
>>>> - wwnn,
>>>> - wwpn) < 0) {
>>>> + wwpn,
>>>> + wwnn) < 0) {
>>>> virReportOOMError();
>>>> goto cleanup;
>>>> }
>>>>
>>> Hmm, this is what we've had before commit f90af69 [1]
>>> but according to scsi_fc_transport.txt [2] in kernel docs, it should be
>>> <WWPN>:<WWNN>. I wonder what that commit was trying to fix.
>>>
>>> Jan
>>>
>>> [1] http://libvirt.org/git/?p=libvirt.git;a=commitdiff;h=f90af69
>>> [2] https://www.kernel.org/doc/Documentation/scsi/scsi_fc_transport.txt
>>>
>> Interesting! According to my testing result (kernel version 2.6.32),
>> kernel docs is correct,it should be <WWPN>:<WWNN>. It's causing me
>> trouble when creating the device with virsh after that commit...
>
> I say ACK to your patch. Your patch matches the kernel documentation
> and you've confirmed that it fixes a clear bug. The original patch
> of Osiers has zero information about what it was fixing, so there's
> little reason to assume it was a correct change based on your feedback.
I found it: it was being called with the parameters swapped in the scsi
storage backend.
Pushing with this squashed in:
diff --git a/src/storage/storage_backend_scsi.c
b/src/storage/storage_backend_scsi.c
index 285c5cb..3deceda 100644
--- a/src/storage/storage_backend_scsi.c
+++ b/src/storage/storage_backend_scsi.c
@@ -659,8 +659,8 @@ createVport(virStoragePoolSourceAdapter adapter)
if (getHostNumber(adapter.data.fchost.parent, &parent_host) < 0)
return -1;
- if (virManageVport(parent_host, adapter.data.fchost.wwnn,
- adapter.data.fchost.wwpn, VPORT_CREATE) < 0)
+ if (virManageVport(parent_host, adapter.data.fchost.wwpn,
+ adapter.data.fchost.wwnn, VPORT_CREATE) < 0)
return -1;
virFileWaitForDevices();
@@ -682,8 +682,8 @@ deleteVport(virStoragePoolSourceAdapter adapter)
if (getHostNumber(adapter.data.fchost.parent, &parent_host) < 0)
return -1;
- if (virManageVport(parent_host, adapter.data.fchost.wwnn,
- adapter.data.fchost.wwpn, VPORT_DELETE) < 0)
+ if (virManageVport(parent_host, adapter.data.fchost.wwpn,
+ adapter.data.fchost.wwnn, VPORT_DELETE) < 0)
return -1;
return 0;
Jan
More information about the libvir-list
mailing list