
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@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