[libvirt] Re: [Patch v0.4] iSCSI Multi-IQN (Libvirt Support)
Shyam_Iyer at Dell.com
Shyam_Iyer at Dell.com
Tue Nov 17 20:23:50 UTC 2009
> -----Original Message-----
> From: Daniel P. Berrange [mailto:berrange at redhat.com]
> Sent: Tuesday, November 17, 2009 11:21 PM
> To: Dave Allan
> Cc: Bellad, Sudhir; libvir-list at redhat.com; Iyer, Shyam; Domsch, Matt;
> KM, Paniraja
> Subject: Re: [libvirt] Re: [Patch v0.4] iSCSI Multi-IQN (Libvirt
> Support)
>
> On Mon, Nov 16, 2009 at 01:58:08PM -0500, Dave Allan wrote:
> > diff --git a/src/storage_backend_iscsi.c
> b/src/storage_backend_iscsi.c
> > index b516add..1fb21a5 100644
> > --- a/src/storage_backend_iscsi.c
> > +++ b/src/storage_backend_iscsi.c
> > @@ -39,6 +39,10 @@
> > #include "storage_backend_iscsi.h"
> > #include "util.h"
> > #include "memory.h"
> > +#include <sys/types.h>
> > +#include <sys/stat.h>
> > +#include <fcntl.h>
> > +#include <unistd.h>
> >
> > #define VIR_FROM_THIS VIR_FROM_STORAGE
> >
> > @@ -159,13 +163,54 @@ virStorageBackendISCSIConnection(virConnectPtr
> conn,
> > const char *portal,
> > const char *action)
> > {
> > - const char *const cmdargv[] = {
> > - ISCSIADM, "--mode", "node", "--portal", portal,
> > - "--targetname", pool->def->source.devices[0].path, action,
> NULL
> > - };
> > -
> > - if (virRun(conn, cmdargv, NULL) < 0)
> > - return -1;
> > + DIR *dir;
> > + struct dirent *entry;
> > +
> > +
> > + if (pool->def->source.initiator.iqnname != NULL) {
> >
> > What's the point of this loop? At best, it's unneeded complexity,
at
> > worst it will match multiple interface names which will create the
> > multiple sessions per pool scenario that I explicitly want to avoid.
> >
> > Secondly, if you want to do some sort of validation of the iqn, why
> are
> > you reading from a hardcoded directory? Can you use the output of
> > iscsiadm? That is likely to be a more stable interface than the
> > directory which I would expect is a compile time option to the iscsi
> > initiator.
>
> I'm really wondering much the same here - I don't see the purpose
> in iterating over this directory. The iqn given in the XML ought
> to be able to be passed straight to iscsadm's -I parameter
>
Iscsiadm's -I parameter takes iface name as the parameter value and not
the iqn name.
So I believe this approach could be taken -
1) Get the iqn for the corresponding iface name using the following
command
#iscsiadm -m iface
Example output:
[root at localhost libvirt-0.7.1-15-org]# iscsiadm -m iface
default tcp,default,default,unknown
iser iser,default,default,unknown
bnx2i bnx2i,default,default,unknown
iface1 tcp,default,default,iqn.1994-05.com.fedora:iqnBellad
iface3 tcp,default,default,iqn.dell
iface0 tcp,unknown,unknown,iqn.1994-05.com.fedora:iqnSudhir
The last value is the initiator iqn name.
More information about the libvir-list
mailing list