Re: [RFC v3 16/42] NFS NFSD defining nl4_servers structure needed by both

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

 



On Wed, Sep 6, 2017 at 4:35 PM, J. Bruce Fields <bfields@xxxxxxxxxxxx> wrote:
> On Tue, Jul 11, 2017 at 12:43:50PM -0400, Olga Kornievskaia wrote:
>> These structures are needed by COPY_NOTIFY on the client and needed
>> by the nfsd as well
>>
>> Signed-off-by: Olga Kornievskaia <kolga@xxxxxxxxxx>
>> ---
>>  include/linux/nfs4.h | 33 +++++++++++++++++++++++++++++++++
>>  1 file changed, 33 insertions(+)
>>
>> diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
>> index 7262908..4179c78 100644
>> --- a/include/linux/nfs4.h
>> +++ b/include/linux/nfs4.h
>> @@ -15,6 +15,7 @@
>>  #include <linux/list.h>
>>  #include <linux/uidgid.h>
>>  #include <uapi/linux/nfs4.h>
>> +#include <linux/sunrpc/msg_prot.h>
>>
>>  enum nfs4_acl_whotype {
>>       NFS4_ACL_WHO_NAMED = 0,
>> @@ -659,4 +660,36 @@ struct nfs4_op_map {
>>       } u;
>>  };
>>
>> +struct nfs42_netaddr {
>> +     unsigned int    na_netid_len;
>> +     char            na_netid[RPCBIND_MAXNETIDLEN + 1];
>> +     unsigned int    na_uaddr_len;
>> +     char            na_uaddr[RPCBIND_MAXUADDRLEN + 1];
>> +};
>> +
>> +enum netloc_type4 {
>> +     NL4_NAME                = 1,
>> +     NL4_URL                 = 2,
>> +     NL4_NETADDR             = 3,
>> +};
>> +
>> +struct nl4_server {
>> +     enum netloc_type4       nl4_type;
>> +     union {
>> +             struct { /* NL4_NAME, NL4_URL */
>> +                     int     nl4_str_sz;
>> +                     char    nl4_str[NFS4_OPAQUE_LIMIT + 1];
>> +             };
>> +             struct nfs42_netaddr    nl4_addr; /* NL4_NETADDR */
>> +     } u;
>> +};
>> +
>> +/*  support 1 nl4_server for now */
>> +#define NFS42_MAX_SSC_SRC       1
>
> In that case, let's just build that assumption into the data structures
> and embed struct nl4_server in nl4_servers and drop the unnecessary
> kmalloc()s.

Wouldn't we still want to malloc as the structure is too big to be
allocated on the stack?

Anna has also suggested dropping nl4_servers since the code sets maximum to 1.
I have resisted making the change because I felt like it was easier to
increase the
MAX_SSC_SRC to say something like 10 and support a multi-home server. Then
the destination server can add smarts to chose between the available address to
connect to the source server with.

Is this not a good argument to keep the structures? Should I change
value to 2 to
indicate desire to support multi-path?

>
> --b.
>
>> +
>> +struct nl4_servers {
>> +     int                     nl_nsvr;
>> +     struct nl4_server       *nl_svr;
>> +};
>> +
>>  #endif
>> --
>> 1.8.3.1
>>
>> --
>> 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
> --
> 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
--
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