• Jeff Layton's avatar
    [CIFS] redo existing session setup if needed in cifs_mount · 1d9a8852
    Jeff Layton authored
    When cifs_mount finds an existing SMB session that it can use for a new
    mount, it does not check to see whether that session is in need of being
    reconnected. An easy way to reproduce:
    
    1) mount //server/share1
    2) watch /proc/fs/cifs/DebugData for the share to go DISCONNECTED
    3) mount //server/share2 with same creds as in step 1.
    
    The second mount will fail because CIFSTCon returned -EAGAIN. If you do
    an operation in share1 and then reattempt the mount it will work (since
    the session is reestablished).
    
    The following patch fixes this by having cifs_mount check the status
    of the session when it picks an existing session and calling
    cifs_setup_session on it again if it's in need of reconnection.
    
    Thanks to Wojciech Pilorz for the initial bug report.
    Signed-off-by: default avatarJeff Layton <jlayton@tupile.poochiereds.net>
    Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
    1d9a8852
connect.c 108 KB