diff options
author | Aurelien Aptel <aaptel@suse.com> | 2019-09-20 04:32:20 +0200 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2019-11-25 01:16:30 -0600 |
commit | bcc8880115bcb36bc281c7f4895a12b51569d8d4 (patch) | |
tree | f3e28f2c029e5b5f104e52770facfc83a563a59a /fs/cifs/cifsglob.h | |
parent | 35adffed079fdcf1818bfe9da7625a5446b626e0 (diff) | |
download | linux-rpi-bcc8880115bcb36bc281c7f4895a12b51569d8d4.tar.gz linux-rpi-bcc8880115bcb36bc281c7f4895a12b51569d8d4.tar.bz2 linux-rpi-bcc8880115bcb36bc281c7f4895a12b51569d8d4.zip |
cifs: add multichannel mount options and data structs
adds:
- [no]multichannel to enable/disable multichannel
- max_channels=N to control how many channels to create
these options are then stored in the volume struct.
- store channels and max_channels in cifs_ses
Signed-off-by: Aurelien Aptel <aaptel@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/cifsglob.h')
-rw-r--r-- | fs/cifs/cifsglob.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 57453226469d..ac3710415f80 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -591,6 +591,10 @@ struct smb_vol { bool resilient:1; /* noresilient not required since not fored for CA */ bool domainauto:1; bool rdma:1; + bool multichannel:1; + bool use_client_guid:1; + /* reuse existing guid for multichannel */ + u8 client_guid[SMB2_CLIENT_GUID_SIZE]; unsigned int bsize; unsigned int rsize; unsigned int wsize; @@ -607,6 +611,7 @@ struct smb_vol { __u64 snapshot_time; /* needed for timewarp tokens */ __u32 handle_timeout; /* persistent and durable handle timeout in ms */ unsigned int max_credits; /* smb3 max_credits 10 < credits < 60000 */ + unsigned int max_channels; __u16 compression; /* compression algorithm 0xFFFF default 0=disabled */ bool rootfs:1; /* if it's a SMB root file system */ }; @@ -953,6 +958,11 @@ struct cifs_server_iface { struct sockaddr_storage sockaddr; }; +struct cifs_chan { + struct TCP_Server_Info *server; + __u8 signkey[SMB3_SIGN_KEY_SIZE]; +}; + /* * Session structure. One of these for each uid session with a particular host */ @@ -1002,6 +1012,12 @@ struct cifs_ses { struct cifs_server_iface *iface_list; size_t iface_count; unsigned long iface_last_update; /* jiffies */ + +#define CIFS_MAX_CHANNELS 16 + struct cifs_chan chans[CIFS_MAX_CHANNELS]; + size_t chan_count; + size_t chan_max; + atomic_t chan_seq; /* round robin state */ }; static inline bool |