Re: [PATCH] Bug 11061, NFS mounts dropped

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

 



On Mon, 2009-02-16 at 11:24 -0500, Chuck Lever wrote:
> On Feb 15, 2009, at 10:32 AM, Ian Dall wrote:
> 
> > I believe this includes all comments so far. I have also swatted up on
> > Documentation/CodingStyle, and modified the comments somewhat to
> > conform.
> 
> There is also a Perl script called scripts/checkpatch.pl that you  
> should run against your patch before submitting.  It can identify and  
> report many common style problems.

Thanks for that, it threw up a few white space issues which I have
fixed.


> I've thought more about this.  I think we don't want the scope ID  
> comparison here at all.  The scope ID is not really part of an IPv6  
> address.  A unique host address is contained only in the sin6_addr  
> field; the scope ID is simply local routing information.  I can't  
> think of a case where two unique remotes would have identical link- 
> local addresses.

Isn't that exactly what makes link local addresses, well, link local?
They only have to be unique to the link (which seems to be in practice a
lan or vlan - a bunch of hosts connected without any routing at the ip
level). They don't have to be globally unique. A single host can be on
multiple lans or vlans.

Finding anything authoritative on this is difficult. The RFC's are
vague. However, following discussion on ietf mail archives, and other
reasonably reputable sources like documentation from IBM, Sun and
FreeBSD  makes me think that my interpretation is correct. Indeed, the
way the BSD crowd seem to do it is to embed the scope_id in the link
local address (internally to the kernel) and thence forth just compare
the address. So they treat it *exactly* like part of the address.

See for example:

http://www.freebsd.org/doc/en/books/developers-handbook/ipv6.html section 8.1.1.3.

http://msdn.microsoft.com/en-us/library/ms739166(VS.85).aspx

http://books.google.com/books?id=6nNjcItz6H4C&pg=PA53&lpg=PA53&dq=sin6_scope_id+%22link+local%22&source=bl&ots=MFyiwYwO5I&sig=hZDvlVcJ8hLOwt7EXoL4lEzT4V4&hl=en&ei=eqCaSdiGD8PDkAWskMmZCw&sa=X&oi=book_result&resnum=7&ct=result

Note especially, section 1.8.1 "Since link local addresses may not be
unique on different links ..."  

The only reasons I can see which would justify omitting the check are:

      * For some reason you could never have a nfs server on a link
        local address.
      * Linux already embeds the scope index in the address for link
        local addresses, internally in the kernel a la BSD. Which I can
        find no evidence for either in the code or in documentation.

There is also the issue that sin6_scope_id == 0 is interpreted as
"unspecified" rather than a specific id. However, as far as I can tell,
the scope_id is only ever unspecified (for link_local addresses) before
a socket is bound. Once a connection is established, the scope id for
link local addresses should always be specified. So by the time this
function is called, the scope_id should be set.


-- 
Ian Dall <ian@xxxxxxxxxxxxxxxxxxxxx>

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[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