NFS client virtualization plan v2
Subsystems (2)
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
Quoted 2 lines · Stanislav Kinsbursky
Hello.
This is an update for this plan. Addedrpc_pipefsand 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:
_RPClayer_:1) Make rpcbind clients (
rpcb_local_clntandrpcb_local4_clnt) to be per net namespace.2) Make RPC pipefs to be per net namespace.
_NFSlayer_:1) Net namespace inheritance (
current->nsproxy->nethave to be used instead ofinit_net).
Pointer to net namespace can be stored onnfs_clientstructure, 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_svcand nfs4.1_callback_svc) able to handle requests from different net namespaces.4) Make NFS info lists (
nfs_volume_listandnfs_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
12.09.2011 18:50, Chuck Lever пишет:
Quoted 10 lines · Stanislav Kinsbursky
Quoted 3 lines
Hello.
This is an update for this plan. Addedrpc_pipefsand 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_nameargument ofNLM_LOCKneeds to be the namespace's local utsname, and this string should be used as themy_nameargument when sending anSM_MONupcall. 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:
_RPClayer_:1) Make rpcbind clients (
rpcb_local_clntandrpcb_local4_clnt) to be per net namespace.2) Make RPC pipefs to be per net namespace.
_NFSlayer_:1) Net namespace inheritance (
current->nsproxy->nethave to be used instead ofinit_net).
Pointer to net namespace can be stored onnfs_clientstructure, 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_svcand nfs4.1_callback_svc) able to handle requests from different net namespaces.4) Make NFS info lists (
nfs_volume_listandnfs_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