[Cluster-devel] Re: [PATCH 2/3] NLM per-ip grace period - core
Wendy Cheng <[email protected]>
| Newsgroups | com.redhat.cluster-devel,org.kernel.vger.linux-nfs |
|---|---|
| Message-ID | <[email protected]> |
Chuck Lever wrote:
> On Jan 28, 2008, at 9:56 PM, J. Bruce Fields wrote:
>> On Fri, Jan 25, 2008 at 12:17:30AM -0500, Wendy Cheng wrote:
>>
>>> The logic is implemented on top of linux nfsd procfs with core
>>> functions
>>> residing in lockd kernel module. Entry function is
>>> nlmsvc_resume_ip() where
>>> it stores the requested ip interface into a linked-list
>>> nlm_failover_list.
>>> The list entry count is nlm_failover_cnt and access protection is
>>> done by
>>> nlm_failover_mutex. Entry in nlm_failover_ip_list is a
>>> "nlm_failover_struct",
>>> defined in: include/linux/lockd/lockd.h.
>>>
>>>
>>> +struct nlm_failover_struct {
>>> + struct list_head g_list; /* linked list */
>>> + unsigned long g_expire; /* grace period expire */
>>> + int g_size; /* g_key type: ipv4 or ipv6 */
>>> + union {
>>> + __be32 ipv4; /* ip v4 address */
>>> + __be32 ipv6[4]; /* ip v6 address */
>>> + } g_key;
>>> +#define g_ip g_key.ipv6
>>> +};
>>
>> Only the second member of that union is every used; could we just get
>> rid of the union?
>>
>> Also, is that the right choice of types? Maybe we should just use
>> struct in6_addr?
>
> I agree with Bruce -- just use in_addr, and leave out the unused IPv6
> stuff for now.
>
> In some places, we just replace in_addr with in6_addr and simply map
> IPv4 to IPv6 addresses, rather than setting up a union.
>
> If the address is used as a hash and never displayed, using a mapped
> IPv4 address is sufficient, and keeps things simple.
ok, I have been yo-yoing about whether doing IPv6 support. This sounds
like a good plan. Will do.
-- Wendy