Project

General

Profile

Actions

Bug #14868

open

SMB reconnect fails when previous session still disconnecting

Added by Gordon Ross 14 days ago. Updated 14 days ago.

Status:
In Progress
Priority:
Normal
Assignee:
Category:
cifs - CIFS server and client
Start date:
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

If a client is fast enough coming back in for a reconnect after their connection drops, they can race with the tear-down of their old session, which can cause odd failures like not finding their durable handles during the reconnect.
It's non-trivial to reproduce, but happens on a fast machine & network if you do enough disconnect/reconnects (I think it happened when there was a network stack bug causing TCP drops fairly frequently.)

Actions #1

Updated by Gordon Ross 14 days ago

  • Status changed from New to In Progress

Integrate this commit from github/Nexenta

commit 54d604f9c6eccd0eb3d3a0ce86bf31b721c33caa
Author: Prashanth Badari <prbadari@tintri.com>
Date:   Wed Jan 13 04:45:53 2021 +0000

    FIR-1506 SMB reconnect fails when previous session still disconnecting

    When TCP reset happens, wait for the trees to go away while we process
    the new session setup request which has the previous session id.
    Do no proceed with smb2_fsctl_odx_read when the request is not active.

    Reviewed by: Gordon Ross <gordon.ross@tintri.com>
    Reviewed by: Prashanth Badari <prbadari@tintri.com>
    Reviewed by: Suresh Jayaraman <sjayaraman@tintri.com>

2    0    usr/src/uts/common/fs/smbsrv/smb2_fsctl_odx.c
4    1    usr/src/uts/common/fs/smbsrv/smb2_fsctl_sparse.c
61    15    usr/src/uts/common/fs/smbsrv/smb_server.c
2    0    usr/src/uts/common/fs/smbsrv/smb_tree.c
49    0    usr/src/uts/common/fs/smbsrv/smb_user.c
3    0    usr/src/uts/common/smbsrv/smb_kproto.h
2    0    usr/src/uts/common/smbsrv/smb_ktypes.h
Actions #2

Updated by Electric Monk 14 days ago

  • Gerrit CR set to 2274
Actions

Also available in: Atom PDF