Animesh Javali has uploaded this change for review. ( https://review.gerrithub.io/c/ffilz/nfs-ganesha/+/1237204?usp=email ) Change subject: Transparent State Migration Implementation ...................................................................... Transparent State Migration Implementation TSM provides distributed NFS state storage in the in-memory state of peer nodes and recovery from peer nodes on node reboot. This implementation provides partial I/O allowance during the grace period. It allows reclaiming of previous OPEN, LOCK, and DELEGATION states and non-conflicting operations while blocking conflicting operations from a different client during the grace period. Core Features: 1. State Tracking: - Maintains per-file state using (fsid_maj, fsid_min, fileid) - Tracks OPEN, LOCK, and DELEGATION states separately - Uses struct state_info_t with linked lists for each state type 2. Scope of Control: - Supports state tracking at export-level and file-level 3. State Operations: - OPEN: Tracks client open state (share_access, share_deny, owner identity) - LOCK: Tracks byte-range locks (start, type, length, owner identity) - DELEGATION: Tracks delegation state (share_access, share_deny, type, owner identity) - Supports deletion of stored in-memory states when CLOSE/UNLOCK/DELEGRETURN/DELEGREVOKE operations occur 5. Recovery Mechanism using peer-based recovery model: - Peer node selection happens at first boot, and this information is broadcast to all nodes - Nodes recover peer node info from any node on reboot, which is then used to recover state from peers 6. Communication: - RPC messaging between nodes using message types - ACK-based confirmation model from peer nodes 7. Enable/Disable: - Controlled via ENABLE_TSM (compile-time) - Controlled via core_param enable_TSM (runtime) - TSM port can be changed via core_param TSM_PORT - Default: Disabled Change-Id: Id606153046bbe035c9acde182195bc4feff11ae5 Signed-off-by: Animesh Javali <Animesh.Javali@ibm.com> --- M src/CMakeLists.txt M src/MainNFSD/CMakeLists.txt M src/MainNFSD/nfs_init.c M src/MainNFSD/nfs_rpc_dispatcher_thread.c M src/MainNFSD/nfs_worker_thread.c A src/MainNFSD/transparent_recovery.c M src/Protocols/CMakeLists.txt M src/Protocols/NFS/nfs4_op_close.c M src/Protocols/NFS/nfs4_op_delegreturn.c M src/Protocols/NFS/nfs4_op_lock.c M src/Protocols/NFS/nfs4_op_open.c A src/Protocols/TSM/CMakeLists.txt A src/Protocols/TSM/tsm_Null.c A src/Protocols/TSM/tsm_msgsnd.c M src/Protocols/XDR/CMakeLists.txt A src/Protocols/XDR/xdr_tsm.c M src/SAL/nfs4_recovery.c M src/SAL/state_deleg.c M src/SAL/state_lock.c M src/include/client_mgr.h M src/include/config-h.in.cmake M src/include/gsh_config.h M src/include/log_common.h M src/include/nfs_init.h M src/include/nfs_proto_data.h M src/include/nfs_proto_functions.h A src/include/transparent_recovery.h A src/include/tsm.h M src/log/log_functions.c M src/nfs-ganesha.spec-in.cmake M src/support/client_mgr.c M src/support/nfs_read_conf.c 32 files changed, 5,250 insertions(+), 9 deletions(-) git pull ssh://review.gerrithub.io:29418/ffilz/nfs-ganesha refs/changes/04/1237204/1 -- To view, visit https://review.gerrithub.io/c/ffilz/nfs-ganesha/+/1237204?usp=email To unsubscribe, or for help writing mail filters, visit https://review.gerrithub.io/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: ffilz/nfs-ganesha Gerrit-Branch: next Gerrit-Change-Id: Id606153046bbe035c9acde182195bc4feff11ae5 Gerrit-Change-Number: 1237204 Gerrit-PatchSet: 1 Gerrit-Owner: Animesh Javali <Animesh.Javali@ibm.com>