• Paulo Alcantara's avatar
    cifs: do not send close in compound create+close requests · 04ad69c3
    Paulo Alcantara authored
    In case of interrupted syscalls, prevent sending CLOSE commands for
    compound CREATE+CLOSE requests by introducing an
    CIFS_CP_CREATE_CLOSE_OP flag to indicate lower layers that it should
    not send a CLOSE command to the MIDs corresponding the compound
    CREATE+CLOSE request.
    
    A simple reproducer:
    
        #!/bin/bash
    
        mount //server/share /mnt -o username=foo,password=***
        tc qdisc add dev eth0 root netem delay 450ms
        stat -f /mnt &>/dev/null & pid=$!
        sleep 0.01
        kill $pid
        tc qdisc del dev eth0 root
        umount /mnt
    
    Before patch:
    
        ...
        6 0.256893470 192.168.122.2 → 192.168.122.15 SMB2 402 Create Request File: ;GetInfo Request FS_INFO/FileFsFullSizeInformation;Close Request
        7 0.257144491 192.168.122.15 → 192.168.122.2 SMB2 498 Create Response File: ;GetInfo Response;Close Response
        9 0.260798209 192.168.122.2 → 192.168.122.15 SMB2 146 Close Request File:
       10 0.260841089 192.168.122.15 → 192.168.122.2 SMB2 130 Close Response, Error: STATUS_FILE_CLOSED
    Signed-off-by: default avatarPaulo Alcantara (SUSE) <pc@cjr.nz>
    Reviewed-by: default avatarRonnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: default avatarAurelien Aptel <aaptel@suse.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    04ad69c3
smb2misc.c 26.8 KB