Hi, thanks for testing the patch! Do all entries have r_netid.len==4? Can you please print r_addr.data and r_addr.len? Benny -----Original Message----- From: Olga Kornievskaia <aglo@xxxxxxxxxxxxxx> Sender: olga.kornievskaia@xxxxxxxxx Date: Mon, 31 Oct 2011 17:16:41 To: Benny Halevy<bhalevy@xxxxxxxxxx> Cc: Michael Groshans<groshans@xxxxxxxxx>; NFS list<linux-nfs@xxxxxxxxxxxxxxx> Subject: Re: [PATCH] pnfsd: dlm: fix bug in DS tcp/tcp6 address string Benny, this patch does not fix the issue. Except that now all the entries list "tcp6". Previously if you recall first data server entry was correct but others listed tcp6 type with it was suppose to be tcp. On Tue, Oct 18, 2011 at 8:52 PM, Benny Halevy <bhalevy@xxxxxxxxxx> wrote: > squash into "pnfsd: Correctly set netid to tcp or tcp6 for non-local exports" > > Currently, the code looks for ':' using strcspn that requires a null terminated string > while the address buffer isn't null terminated. > > Instead, just use strnchr to look for a ':' and if not found assume > it's an IPv4 address, otherwise it's IPv6 > > Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx> > --- > fs/nfsd/nfs4pnfsdlm.c | 9 ++------- > 1 files changed, 2 insertions(+), 7 deletions(-) > > diff --git a/fs/nfsd/nfs4pnfsdlm.c b/fs/nfsd/nfs4pnfsdlm.c > index abc4d83..d07a6037 100644 > --- a/fs/nfsd/nfs4pnfsdlm.c > +++ b/fs/nfsd/nfs4pnfsdlm.c > @@ -328,13 +328,8 @@ static int nfsd4_pnfs_dlm_getdevinfo(struct super_block *sb, > memcpy(daddr->r_addr.data + len, ".8.1", 4); > daddr->r_addr.len = len + 4; > > - if (strcspn(daddr->r_addr.data, ":") - 1 == daddr->r_addr.len) { > - daddr->r_netid.data = "tcp"; > - daddr->r_netid.len = 3; > - } else { > - daddr->r_netid.data = "tcp6"; > - daddr->r_netid.len = 4; > - } > + daddr->r_netid.data = "tcp6"; > + daddr->r_netid.len = strnchr(daddr->r_addr.data, len, ':') ? 4 : 3; > > fdev.fl_device_list[i].fl_multipath_length = 1; > fdev.fl_device_list[i].fl_multipath_list = daddr; > -- > 1.7.6 > > ÿôèº{.nÇ+‰·Ÿ®‰†+%ŠËÿ±éݶ¥Šwÿº{.nÇ+‰·¥Š{±þwìþ)í…æèw*jg¬±¨¶‰šŽŠÝ¢jÿ¾«þG«?éÿ¢¸¢·¦j:+v‰¨ŠwèjØm¶Ÿÿþø¯ù®w¥þŠàþf£¢·hš?â?úÿ†Ù¥