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(a)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(a)ibm.com>