Skip to contentSkip to conversation

NFS client virtualization plan v2

DISCUSSION Stanislav Kinsbursky 2 participants 3 messages Sep 12, 2011

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hello.
This is an update for this plan. Added rpc_pipefs and NFS cache virtualization.

==============================================================================

"NFS client" virtualization plan:

_RPC layer_:

1) Make rpcbind clients (rpcb_local_clnt and rpcb_local4_clnt) to be per net namespace.

2) Make RPC pipefs to be per net namespace.

_NFS layer_:

1) Net namespace inheritance (current->nsproxy->net have to be used instead of init_net).
Pointer to net namespace can be stored on nfs_client structure, which will give easy access to proper net namespace during RPC transports creation.

2) Make Lockd kthread able to handle requests from different net namespaces.

3) Make NFS callbacks kthreads (nfs4_callback_svc and nfs4.1_callback_svc) able to handle requests from different net namespaces.

4) Make NFS info lists (nfs_volume_list and nfs_client_list) to be per net namespace in addition to global ones.

5) Make NFS proc variables and it's internal content variables to be per net namespace in addition to global ones.

6) Make NFS sysctl variables and it's internal content variables to be per net namespace in addition to global ones.

7) Make NFS cache per net namespace.

Signature · 6 lines
Best regards,
Stanislav Kinsbursky
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#1 lore raw
Quoted 2 lines · Stanislav Kinsbursky

Hello.
This is an update for this plan. Added rpc_pipefs and NFS cache virtualization.

You may need a per-net namespace NSM monitor list as well. That means running a per-namespace statd, each with its own local sm and sm.bak directories, and keeping the in-kernel monitor information sorted by namespace.

The caller_name argument of NLM_LOCK needs to be the namespace's local utsname, and this string should be used as the my_name argument when sending an SM_MON upcall. I've got a patch or two that make this simpler.

Quoted 26 lines

==============================================================================

"NFS client" virtualization plan:

_RPC layer_:

1) Make rpcbind clients (rpcb_local_clnt and rpcb_local4_clnt) to be per net namespace.

2) Make RPC pipefs to be per net namespace.

_NFS layer_:

1) Net namespace inheritance (current->nsproxy->net have to be used instead of init_net).
Pointer to net namespace can be stored on nfs_client structure, which will give easy access to proper net namespace during RPC transports creation.

2) Make Lockd kthread able to handle requests from different net namespaces.

3) Make NFS callbacks kthreads (nfs4_callback_svc and nfs4.1_callback_svc) able to handle requests from different net namespaces.

4) Make NFS info lists (nfs_volume_list and nfs_client_list) to be per net namespace in addition to global ones.

Quoted 21 lines

5) Make NFS proc variables and it's internal content variables to be per net namespace in addition to global ones.

6) Make NFS sysctl variables and it's internal content variables to be per net namespace in addition to global ones.

7) Make NFS cache per net namespace.

Signature · 10 lines
Best regards,
Stanislav Kinsbursky
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to [email protected]
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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com

#2 lore raw

12.09.2011 18:50, Chuck Lever пишет:

Quoted 10 lines · Stanislav Kinsbursky
Quoted 3 lines

Hello.
This is an update for this plan. Added rpc_pipefs and NFS cache virtualization.

You may need a per-net namespace NSM monitor list as well. That means running a per-namespace statd, each with its own local sm and sm.bak directories, and keeping the in-kernel monitor information sorted by namespace.

The caller_name argument of NLM_LOCK needs to be the namespace's local utsname, and this string should be used as the my_name argument when sending an SM_MON upcall. I've got a patch or two that make this simpler.

Great. Thanks for advise, Chuck.
Right now this part of the code is not clear enough for me and I'm mainly concentrated on rpcbind and pipefs. Hope for your assistance later when I'll get to the point (if any problems occur).

Quoted 54 lines
Quoted 36 lines

==============================================================================

"NFS client" virtualization plan:

_RPC layer_:

1) Make rpcbind clients (rpcb_local_clnt and rpcb_local4_clnt) to be per net namespace.

2) Make RPC pipefs to be per net namespace.

_NFS layer_:

1) Net namespace inheritance (current->nsproxy->net have to be used instead of init_net).
Pointer to net namespace can be stored on nfs_client structure, which will give easy access to proper net namespace during RPC transports creation.

2) Make Lockd kthread able to handle requests from different net namespaces.

3) Make NFS callbacks kthreads (nfs4_callback_svc and nfs4.1_callback_svc) able to handle requests from different net namespaces.

4) Make NFS info lists (nfs_volume_list and nfs_client_list) to be per net namespace in addition to global ones.

5) Make NFS proc variables and it's internal content variables to be per net namespace in addition to global ones.

6) Make NFS sysctl variables and it's internal content variables to be per net namespace in addition to global ones.

7) Make NFS cache per net namespace.

Quoted 11 lines

--
Best regards,
Stanislav Kinsbursky
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to [email protected]
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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com

Signature · 2 lines
Best regards,
Stanislav Kinsbursky