Re: [PATCH] pnfsd: dlm: fix bug in DS tcp/tcp6 address string

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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š?â?úÿ†Ù¥



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux