[stgt] [osd-dev] [PATCH 10/15 ver2] tgt: os.h: getnameinfo() is different on none-Linux systems

FUJITA Tomonori fujita.tomonori at lab.ntt.co.jp
Mon Mar 9 12:04:59 CET 2009


On Tue, 03 Mar 2009 12:15:34 +0200
Boaz Harrosh <bharrosh at panasas.com> wrote:

> Boaz Harrosh wrote:
> > Systems other then Linux are more picky with the addr length
> > passed to getnameinfo. They expect it to be set from the
> > returned length of the call to getsockname. Use an
> > os_getsockname_ss, that is implemented diffrently for BSD
> > or Linux.
> > 
> > Both getsockname and getnameinfo might fail check for
> > errors.
> > 
> > Also added a couple of eprints in error cases.
> > 
> > Signed-off-by: Boaz Harrosh <bharrosh at panasas.com>
> <snip>
> > diff --git a/usr/iscsi/iscsid.c b/usr/iscsi/iscsid.c
> > index bfaec87..53b231f 100644
> > --- a/usr/iscsi/iscsid.c
> > +++ b/usr/iscsi/iscsid.c
> > @@ -39,6 +39,7 @@
> >  #include "driver.h"
> >  #include "scsi.h"
> >  #include "crc32c.h"
> > +#include "os.h"
> >  
> >  #define MAX_QUEUE_CMD	128
> >  
> > @@ -743,6 +744,7 @@ static void text_scan_text(struct iscsi_connection *conn)
> >  {
> >  	char *key, *value, *data;
> >  	int datasize;
> > +	int ret;
> >  
> >  	data = conn->req.data;
> >  	datasize = conn->req.datasize;
> > @@ -760,22 +762,31 @@ static void text_scan_text(struct iscsi_connection *conn)
> >  			blen = sizeof(buf);
> >  
> >  			slen = sizeof(ss);
> > -			conn->tp->ep_getsockname(conn, (struct sockaddr *) &ss,
> > -						 &slen);
> > +			ret = conn->tp->ep_getsockname(conn,
> > +						(struct sockaddr *) &ss, &slen);
> 
> TOMO if you are already experimenting, it might work if &slen is left
> untouched and is passed as returned from getsockname to getnameinfo.
> 
> This might work on both Linux and BSD.

Yes, that's the proper way to handle this issue.

> But then we must make sure
> that all transports set &slen to something good.

All the transports must make sure that ep_getsockname should set slen
because getsockname does for tcp. iser sets it up properly.

So far looks like this patchset adds wrong workarounds instead doing
the right things. Sigh, I have to investigate all the patchset in a
line-by-line manner.
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list