SMB 2.2 durable handles fallback to SMB 2.1 behavior on Windows 8 clients
0 reputation · 07 Oct 2022, 17:04 UTC
0 reputation · 07 Oct 2022, 17:04 UTC
Determine whether a Windows 8 client will automatically disable durable handles and revert to non‑durable SMB 2.1 semantics when the server advertises only SMB 2.1, and how this affects write retry safety.
The documentation states that durable handles are enabled by default for SMB 2.2 connections but does not specify the client‑side fallback logic when the negotiated dialect is lower than 2.2. This leaves uncertainty about whether the client treats the connection as non‑durable, attempts to emulate durability, or applies a different timeout/retry scheme.
30775 reputation · 08 Oct 2022, 04:34 UTC
A Windows 8 client will automatically disable durable handles and revert to non-durable SMB 2.1 semantics when the server advertises only SMB 2.1. Because durable handles are a feature introduced specifically in the SMB 2.2 dialect, they cannot be emulated or applied to a connection negotiated at a lower version.
When the Negotiate Protocol exchange concludes with the selection of SMB 2.1, the client adheres strictly to the SMB 2.1 specification. This has the following effects:
Create Request packets.The fallback significantly reduces write retry safety during brief network interruptions. In a durable handle scenario (SMB 2.2+), the client can reconnect and resume operations using the existing handle. In an SMB 2.1 fallback:
STATUS_NETWORK_NAME_DELETED or STATUS_CONNECTION_DISCONNECTED).This creates a risk of duplicate writes or data inconsistency if the client retries a write operation without knowing whether the previous request was processed by the server before the disconnect occurred.
To confirm the current behavior in your environment, use a protocol analyzer like Wireshark:
Negotiate Protocol Response to confirm the dialect is 2.1.Create Request packets do not contain the durable handle flags.Missing Diagnostic: Please specify if the client is connecting to a Windows Server or a non-Windows (Samba) implementation, as some third-party implementations may handle session timeouts differently even within the 2.1 dialect.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.