Quick answer
Disable SMB leasing on the server or increase the IRPStackSize registry value to 20. Reboot after the change.
What's actually happening here
Error 0X000002C5 — ERROR_RECEIVE_PARTIAL_EXPEDITED — appears when the SMB client receives a partial data segment that was marked as expedited by the transport layer. In plain English: during a file copy over a network share, Windows expects a complete chunk of data, but the packet arrives cut short or out of order. This usually happens with SMB v3 over high-latency or congested links — think copying a 10GB ISO file from a server in another office over a VPN tunnel.
The OS flags this because expedited data should take priority and arrive intact. When it doesn't, the SMB protocol treats it as a protocol violation and throws this error. The root cause is almost never a corrupt file — it's buffer exhaustion or SMB lease state mismanagement on the server side.
Fix steps
- Disable SMB leasing on the server — This is the fix that works 90% of the time. Leasing lets clients hold file locks longer for performance, but it breaks under latency. Open PowerShell as admin on the file server and run:
If you're on Windows Server 2016/2019, also run:Set-SmbClientConfiguration -EnableLeasing $false -Force
Then reboot the server. Test the transfer.Set-SmbServerConfiguration -EnableLeasing $false -Force - Increase IRPStackSize — If step 1 doesn't cut it, the SMB buffer path is too shallow. Open Regedit, go to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters. Create a DWORD (32-bit) namedIRPStackSizeand set it to20(decimal). Reboot. This increases the internal I/O request packet stack depth, giving SMB more room to handle bursty expedited data. - Disable SMB multi-channel — On the client, run:
Multi-channel tries to use multiple network paths and can reorder packets. Disabling it forces single-path ordering, which stops the partial expedited condition. Reboot after.Set-SmbClientConfiguration -EnableMultiChannel $false -Force - Check network MTU — Set the MTU on both client and server NICs to 1500 (standard Ethernet). Jumbo frames (9000 MTU) can cause fragmentation that triggers this error. Use:
Replacenetsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistentEthernetwith your adapter name.
Alternative fixes if the main one fails
- Switch to SMB v2 — Disable SMB v3 on the server. Run PowerShell:
This is a nuclear option — SMB v3 has encryption and performance features you lose. But it worked on a Server 2019 box I manage that had a flaky NIC driver. Reboot required.Set-SmbServerConfiguration -EnableSMB3Protocol $false -Force - Update NIC drivers — Specifically Realtek and Intel i219-V chipsets had bugs around TCP offload that caused partial expedited packets. Check the manufacturer's site for a driver dated within the last 12 months.
- Disable TCP segment offload (TSO) — On the client NIC, in Device Manager, uncheck
Large Send Offload (IPv4)andLarge Send Offload (IPv6)under Advanced. This forces the CPU to handle segmentation, eliminating the partial-expedited trigger.
Prevention tip
On file servers that serve many concurrent copies over WAN links, keep SMB leasing disabled by default. The performance hit from disabling leases is usually under 5% in throughput, but the stability gain is massive. I'd rather have a slightly slower copy than one that fails halfway with 0x000002C5. Also set a monthly task to check NIC driver versions — stale drivers are the second most common cause after leasing issues.
One nasty corner case: if you're using DFS Namespaces and the referral uses a different subnet, the
0x000002C5can fire on every reconnection. Fix that by setting the target referral order in DFS Management to prioritize the same subnet.