Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Mar 2021 22:02:19 +0100
From:      tuexen@freebsd.org
To:        Rick Macklem <rmacklem@uoguelph.ca>
Cc:        "Scheffenegger, Richard" <Richard.Scheffenegger@netapp.com>, "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   Re: NFS Mount Hangs
Message-ID:  <9EE3DFAC-72B0-4256-B57C-DE6AA811413C@freebsd.org>
In-Reply-To: <YQXPR0101MB0968D2362456D43DF528A7E9DD699@YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM>
References:  <C643BB9C-6B61-4DAC-8CF9-CE04EA7292D0@tildenparkcapital.com> <3750001D-3F1C-4D9A-A9D9-98BCA6CA65A4@tildenparkcapital.com> <33693DE3-7FF8-4FAB-9A75-75576B88A566@tildenparkcapital.com> <YQXPR0101MB0968DC18E00833DE2969C636DD6A9@YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM> <SN4PR0601MB3728780CE9ADAB144B3B681486699@SN4PR0601MB3728.namprd06.prod.outlook.com> <2890D243-AF46-43A4-A1AD-CB0C3481511D@lurchi.franken.de> <YQXPR0101MB0968D2362456D43DF528A7E9DD699@YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM>

next in thread | previous in thread | raw e-mail | index | archive | help
> On 18. Mar 2021, at 21:55, Rick Macklem <rmacklem@uoguelph.ca> wrote:
>=20
> Michael Tuexen wrote:
>>> On 18. Mar 2021, at 13:42, Scheffenegger, Richard =
<Richard.Scheffenegger@netapp.com> wrote:
>>>=20
>>>>> Output from the NFS Client when the issue occurs # netstat -an | =
grep
>>>>> NFS.Server.IP.X
>>>>> tcp        0      0 NFS.Client.IP.X:46896      =
NFS.Server.IP.X:2049       FIN_WAIT2
>>>> I'm no TCP guy. Hopefully others might know why the client would be =
stuck in FIN_WAIT2 (I vaguely recall this means it is waiting for a =
fin/ack, but could be wrong?)
>>>=20
>>> When the client is in Fin-Wait2 this is the state you end up when =
the Client side actively close() the tcp session, and then the server =
also ACKed the FIN.
> Jason noted:
>=20
>> When the issue occurs, this is what I see on the NFS Server.
>> tcp4       0      0 NFS.Server.IP.X.2049      NFS.Client.IP.X.51550   =
  CLOSE_WAIT
>>=20
>> which corresponds to the state on the client side. The server =
received the FIN
>> from the client and acked it.
>> The server is waiting for a close call to happen.
>> So the question is: Is the server also closing the connection?
> Did you mean to say "client closing the connection here?"
Yes.
>=20
> The server should call soclose() { it never calls soshutdown() } when
> soreceive(with MSG_WAIT) returns 0 bytes or an error that indicates
> the socket is broken.
> --> The soreceive() call is triggered by an upcall for the rcv side of =
the socket.
> So, are you saying the FreeBSD NFS server did not call soclose() for =
this case?
Yes. If the state at the server side is CLOSE_WAIT, no close call has =
happened yet.
The FIN from the client was received, it was ACKED, but no close() call
(or shutdown(..., SHUT_WR) or shutdown(..., SHUT_RDWR)) was issued. =
Therefore,
no FIN was sent and the client should be in the FINWAIT-2 state. This =
was also
reported. So the reported states are consistent.

Best regards
Michael

>=20
> rick
>=20
> Best regards
> Michael
>> This will last for ~2 min or so, but is asynchronous. However, the =
same 4-tuple can not be reused during this time.
>>=20
>> With other words, from the socket / TCP, a properly executed active =
close() will end up in this state. (If the other side initiated the =
close, a passive close, will not end in this state)
>>=20
>>=20
>> _______________________________________________
>> freebsd-net@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-net
>> To unsubscribe, send any mail to =
"freebsd-net-unsubscribe@freebsd.org"
>=20
>=20
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9EE3DFAC-72B0-4256-B57C-DE6AA811413C>