Page MenuHomeFreeBSD

add support for BindConnectionToSession to the NFSv4.1/4.2 client
ClosedPublic

Authored by rmacklem on Mar 28 2021, 10:11 PM.

Details

Summary

When the client side krpc does a TCP reconnect for a NFSv4.1/4.2
mount, the fore channel will be bound to the connection when
the first RPC with Sequence (almost all RPCs) is done on the
connection. However, the back channel must be explicitly bound
via BindConnectionToSession as the first RPC on the new connection.

Since the reconnect is done by the client side krpc, this patch
adds an optional upcall for the krpc to perform when a new
connection is created. This upcall is used to perform the
BindConnectionToSession.

Back channels are only configured when the nfscbd(8)
daemon is running. It is recommended to not run
nfscbd(8) until this patch is applied.

Test Plan

Tested via a NFSv4.2 mount with nfscbd(8) running
on the client by introducing a temporary network partition to the server
while capturing packets, to see that
the BindConnectionToSession was done correctly on the wire.

Diff Detail

Repository
R10 FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

rmacklem created this revision.

Well, I don't see anything wrong with the code, @rmacklem . But I'm so ignorant of the protocol that I'm afraid I'm not able to give it a very good review.

This revision was not accepted when it landed; it landed in state Needs Review.Mon, Apr 12, 3:49 AM
This revision was automatically updated to reflect the committed changes.