Moritz Tanner has uploaded this change for review.

View Change

recovery: add RecoverySkipIp to omit IP from tag

In some HA configurations a client may be seen by the server under a
different source IP after a failover (e.g. due to NAT or overlay
networking). This causes grace-period reclaim to fail because the
stored recovery tag embeds the client's source IP and no longer
matches.

Add an NFSv4 config boolean RecoverySkipIp (default false) that makes
nfs4_create_clid_name() build the tag from only the opaque client
owner, without the address prefix. The tag changes from
"<addr>-(len:opaque)" to "(len:opaque)". Both add and check build the
tag the same way, so check_clid() needs no change. Existing records
written with the address prefix will not match after enabling the
option; clients re-establish fresh state on the first restart.

Change-Id: Ic33a23f4f4bb3d3a1dd82e1669ca47366290b213
Signed-off-by: Moritz Tanner <moritz.tanner@linbit.com>
---
M src/SAL/nfs4_recovery.c
M src/include/gsh_config.h
M src/support/nfs_read_conf.c
M src/test/CMakeLists.txt
A src/test/test_recovery_tag.c
5 files changed, 118 insertions(+), 5 deletions(-)

git pull ssh://review.gerrithub.io:29418/ffilz/nfs-ganesha refs/changes/50/1239050/1

To view, visit change 1239050. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: ffilz/nfs-ganesha
Gerrit-Branch: next
Gerrit-Change-Id: Ic33a23f4f4bb3d3a1dd82e1669ca47366290b213
Gerrit-Change-Number: 1239050
Gerrit-PatchSet: 1
Gerrit-Owner: Moritz Tanner <moritz.tanner@linbit.com>