• Home
  • Raw
  • Download

Lines Matching refs:tcon

81 static int encryption_required(const struct cifs_tcon *tcon)  in encryption_required()  argument
83 if (!tcon) in encryption_required()
85 if ((tcon->ses->session_flags & SMB2_SESSION_FLAG_ENCRYPT_DATA) || in encryption_required()
86 (tcon->share_flags & SHI1005_FLAGS_ENCRYPT_DATA)) in encryption_required()
88 if (tcon->seal && in encryption_required()
89 (tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in encryption_required()
96 const struct cifs_tcon *tcon) in smb2_hdr_assemble() argument
101 if (tcon && tcon->ses && tcon->ses->server) { in smb2_hdr_assemble()
102 struct TCP_Server_Info *server = tcon->ses->server; in smb2_hdr_assemble()
118 if (!tcon) in smb2_hdr_assemble()
123 if ((tcon->ses) && (tcon->ses->server) && in smb2_hdr_assemble()
124 (tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU)) in smb2_hdr_assemble()
128 shdr->TreeId = tcon->tid; in smb2_hdr_assemble()
130 if (tcon->ses) in smb2_hdr_assemble()
131 shdr->SessionId = tcon->ses->Suid; in smb2_hdr_assemble()
146 if (tcon->ses && tcon->ses->server && tcon->ses->server->sign && in smb2_hdr_assemble()
147 !encryption_required(tcon)) in smb2_hdr_assemble()
154 smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon) in smb2_reconnect() argument
166 if (tcon == NULL) in smb2_reconnect()
172 if (tcon->tidStatus == CifsExiting) { in smb2_reconnect()
186 if ((!tcon->ses) || (tcon->ses->status == CifsExiting) || in smb2_reconnect()
187 (!tcon->ses->server)) in smb2_reconnect()
190 ses = tcon->ses; in smb2_reconnect()
231 if (!tcon->retry) { in smb2_reconnect()
237 if (!tcon->ses->need_reconnect && !tcon->need_reconnect) in smb2_reconnect()
246 mutex_lock(&tcon->ses->session_mutex); in smb2_reconnect()
255 mutex_unlock(&tcon->ses->session_mutex); in smb2_reconnect()
259 rc = cifs_negotiate_protocol(0, tcon->ses); in smb2_reconnect()
260 if (!rc && tcon->ses->need_reconnect) { in smb2_reconnect()
261 rc = cifs_setup_session(0, tcon->ses, nls_codepage); in smb2_reconnect()
262 if ((rc == -EACCES) && !tcon->retry) { in smb2_reconnect()
264 mutex_unlock(&tcon->ses->session_mutex); in smb2_reconnect()
268 if (rc || !tcon->need_reconnect) { in smb2_reconnect()
269 mutex_unlock(&tcon->ses->session_mutex); in smb2_reconnect()
273 cifs_mark_open_files_invalid(tcon); in smb2_reconnect()
274 if (tcon->use_persistent) in smb2_reconnect()
275 tcon->need_reopen_files = true; in smb2_reconnect()
277 rc = SMB2_tcon(0, tcon->ses, tcon->treeName, tcon, nls_codepage); in smb2_reconnect()
278 mutex_unlock(&tcon->ses->session_mutex); in smb2_reconnect()
315 fill_small_buf(__le16 smb2_command, struct cifs_tcon *tcon, void *buf, in fill_small_buf() argument
328 smb2_hdr_assemble(&spdu->sync_hdr, smb2_command, tcon); in fill_small_buf()
336 smb2_plain_req_init(__le16 smb2_command, struct cifs_tcon *tcon, in smb2_plain_req_init() argument
342 rc = smb2_reconnect(smb2_command, tcon); in smb2_plain_req_init()
355 fill_small_buf(smb2_command, tcon, shdr, total_len); in smb2_plain_req_init()
357 if (tcon != NULL) { in smb2_plain_req_init()
361 cifs_stats_inc(&tcon->stats.smb2_stats.smb2_com_sent[com_code]); in smb2_plain_req_init()
363 cifs_stats_inc(&tcon->num_smbs_sent); in smb2_plain_req_init()
376 small_smb2_init(__le16 smb2_command, struct cifs_tcon *tcon, in small_smb2_init() argument
383 rc = smb2_reconnect(smb2_command, tcon); in small_smb2_init()
396 fill_small_buf(smb2_command, tcon, get_sync_hdr(pdu), &total_len); in small_smb2_init()
401 if (tcon != NULL) { in small_smb2_init()
404 cifs_stats_inc(&tcon->stats.smb2_stats.smb2_com_sent[com_code]); in small_smb2_init()
406 cifs_stats_inc(&tcon->num_smbs_sent); in small_smb2_init()
660 int smb3_validate_negotiate(const unsigned int xid, struct cifs_tcon *tcon) in smb3_validate_negotiate() argument
677 if (tcon->ses->session_flags & SMB2_SESSION_FLAG_IS_GUEST) in smb3_validate_negotiate()
680 if (tcon->ses->user_name == NULL) { in smb3_validate_negotiate()
685 if (tcon->ses->session_flags & SMB2_SESSION_FLAG_IS_NULL) in smb3_validate_negotiate()
689 cpu_to_le32(tcon->ses->server->vals->req_capabilities); in smb3_validate_negotiate()
690 memcpy(vneg_inbuf.Guid, tcon->ses->server->client_guid, in smb3_validate_negotiate()
693 if (tcon->ses->sign) in smb3_validate_negotiate()
703 if (strcmp(tcon->ses->server->vals->version_string, in smb3_validate_negotiate()
710 } else if (strcmp(tcon->ses->server->vals->version_string, in smb3_validate_negotiate()
721 cpu_to_le16(tcon->ses->server->vals->protocol_id); in smb3_validate_negotiate()
727 rc = SMB2_ioctl(xid, tcon, NO_FILE_ID, NO_FILE_ID, in smb3_validate_negotiate()
749 if (pneg_rsp->Dialect != cpu_to_le16(tcon->ses->server->dialect)) in smb3_validate_negotiate()
752 if (pneg_rsp->SecurityMode != cpu_to_le16(tcon->ses->server->sec_mode)) in smb3_validate_negotiate()
758 SMB2_LARGE_FILES) != tcon->ses->server->capabilities) in smb3_validate_negotiate()
1258 static inline void cifs_stats_fail_inc(struct cifs_tcon *tcon, uint16_t code) in cifs_stats_fail_inc() argument
1260 cifs_stats_inc(&tcon->stats.smb2_stats.smb2_com_failed[code]); in cifs_stats_fail_inc()
1266 static inline void init_copy_chunk_defaults(struct cifs_tcon *tcon) in init_copy_chunk_defaults() argument
1268 tcon->max_chunks = 256; in init_copy_chunk_defaults()
1269 tcon->max_bytes_chunk = 1048576; in init_copy_chunk_defaults()
1270 tcon->max_bytes_copy = 16777216; in init_copy_chunk_defaults()
1275 struct cifs_tcon *tcon, const struct nls_table *cp) in SMB2_tcon() argument
1304 if (tcon) in SMB2_tcon()
1305 tcon->tid = 0; in SMB2_tcon()
1307 rc = small_smb2_init(SMB2_TREE_CONNECT, tcon, (void **) &req); in SMB2_tcon()
1313 if (tcon == NULL) { in SMB2_tcon()
1321 } else if (encryption_required(tcon)) in SMB2_tcon()
1342 if (tcon) { in SMB2_tcon()
1343 cifs_stats_fail_inc(tcon, SMB2_TREE_CONNECT_HE); in SMB2_tcon()
1344 tcon->need_reconnect = true; in SMB2_tcon()
1349 if (tcon == NULL) { in SMB2_tcon()
1359 tcon->ipc = true; in SMB2_tcon()
1363 tcon->ipc = true; in SMB2_tcon()
1372 tcon->share_flags = le32_to_cpu(rsp->ShareFlags); in SMB2_tcon()
1373 tcon->capabilities = rsp->Capabilities; /* we keep caps little endian */ in SMB2_tcon()
1374 tcon->maximal_access = le32_to_cpu(rsp->MaximalAccess); in SMB2_tcon()
1375 tcon->tidStatus = CifsGood; in SMB2_tcon()
1376 tcon->need_reconnect = false; in SMB2_tcon()
1377 tcon->tid = rsp->hdr.sync_hdr.TreeId; in SMB2_tcon()
1378 strlcpy(tcon->treeName, tree, sizeof(tcon->treeName)); in SMB2_tcon()
1381 ((tcon->share_flags & SHI1005_FLAGS_DFS) == 0)) in SMB2_tcon()
1384 if (tcon->seal && in SMB2_tcon()
1385 !(tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in SMB2_tcon()
1388 init_copy_chunk_defaults(tcon); in SMB2_tcon()
1389 if (tcon->ses->server->ops->validate_negotiate) in SMB2_tcon()
1390 rc = tcon->ses->server->ops->validate_negotiate(xid, tcon); in SMB2_tcon()
1404 SMB2_tdis(const unsigned int xid, struct cifs_tcon *tcon) in SMB2_tdis() argument
1408 struct cifs_ses *ses = tcon->ses; in SMB2_tdis()
1416 if ((tcon->need_reconnect) || (tcon->ses->need_reconnect)) in SMB2_tdis()
1419 rc = small_smb2_init(SMB2_TREE_DISCONNECT, tcon, (void **) &req); in SMB2_tdis()
1423 if (encryption_required(tcon)) in SMB2_tdis()
1429 cifs_stats_fail_inc(tcon, SMB2_TREE_DISCONNECT_HE); in SMB2_tdis()
1731 struct cifs_tcon *tcon = oparms->tcon; in SMB2_open() local
1732 struct cifs_ses *ses = tcon->ses; in SMB2_open()
1752 rc = small_smb2_init(SMB2_CREATE, tcon, (void **) &req); in SMB2_open()
1756 if (encryption_required(tcon)) in SMB2_open()
1788 if (tcon->share_flags & SHI1005_FLAGS_DFS) { in SMB2_open()
1794 tcon->treeName, path); in SMB2_open()
1854 tcon->use_persistent); in SMB2_open()
1869 cifs_stats_fail_inc(tcon, SMB2_CREATE_HE); in SMB2_open()
1904 SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid, in SMB2_ioctl() argument
1929 if (tcon) in SMB2_ioctl()
1930 ses = tcon->ses; in SMB2_ioctl()
1937 rc = small_smb2_init(SMB2_IOCTL, tcon, (void **) &req); in SMB2_ioctl()
1951 if (encryption_required(tcon)) in SMB2_ioctl()
2016 cifs_stats_fail_inc(tcon, SMB2_IOCTL_HE); in SMB2_ioctl()
2021 cifs_stats_fail_inc(tcon, SMB2_IOCTL_HE); in SMB2_ioctl()
2068 SMB2_set_compression(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_set_compression() argument
2078 rc = SMB2_ioctl(xid, tcon, persistent_fid, volatile_fid, in SMB2_set_compression()
2090 SMB2_close(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_close() argument
2095 struct cifs_ses *ses = tcon->ses; in SMB2_close()
2107 rc = small_smb2_init(SMB2_CLOSE, tcon, (void **) &req); in SMB2_close()
2111 if (encryption_required(tcon)) in SMB2_close()
2126 cifs_stats_fail_inc(tcon, SMB2_CLOSE_HE); in SMB2_close()
2195 query_info(const unsigned int xid, struct cifs_tcon *tcon, in query_info() argument
2206 struct cifs_ses *ses = tcon->ses; in query_info()
2214 rc = small_smb2_init(SMB2_QUERY_INFO, tcon, (void **) &req); in query_info()
2218 if (encryption_required(tcon)) in query_info()
2244 cifs_stats_fail_inc(tcon, SMB2_QUERY_INFO_HE); in query_info()
2271 int SMB2_query_eas(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_query_eas() argument
2275 return query_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_query_eas()
2283 int SMB2_query_info(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_query_info() argument
2286 return query_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_query_info()
2294 SMB2_query_acl(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_query_acl() argument
2301 return query_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_query_acl()
2307 SMB2_get_srv_num(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_get_srv_num() argument
2310 return query_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_get_srv_num()
2343 struct cifs_tcon *tcon, *tcon2; in smb2_reconnect_server() local
2358 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) { in smb2_reconnect_server()
2359 if (tcon->need_reconnect || tcon->need_reopen_files) { in smb2_reconnect_server()
2360 tcon->tc_count++; in smb2_reconnect_server()
2361 list_add_tail(&tcon->rlist, &tmp_list); in smb2_reconnect_server()
2375 list_for_each_entry_safe(tcon, tcon2, &tmp_list, rlist) { in smb2_reconnect_server()
2376 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon); in smb2_reconnect_server()
2378 cifs_reopen_persistent_handles(tcon); in smb2_reconnect_server()
2381 list_del_init(&tcon->rlist); in smb2_reconnect_server()
2382 cifs_put_tcon(tcon); in smb2_reconnect_server()
2434 SMB2_flush(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid, in SMB2_flush() argument
2438 struct cifs_ses *ses = tcon->ses; in SMB2_flush()
2450 rc = small_smb2_init(SMB2_FLUSH, tcon, (void **) &req); in SMB2_flush()
2454 if (encryption_required(tcon)) in SMB2_flush()
2468 cifs_stats_fail_inc(tcon, SMB2_FLUSH_HE); in SMB2_flush()
2487 rc = smb2_plain_req_init(SMB2_READ, io_parms->tcon, (void **) &req, in smb2_new_read_req()
2491 if (io_parms->tcon->ses->server == NULL) in smb2_new_read_req()
2538 struct cifs_tcon *tcon = tlink_tcon(rdata->cfile->tlink); in smb2_readv_callback() local
2539 struct TCP_Server_Info *server = tcon->ses->server; in smb2_readv_callback()
2568 cifs_stats_bytes_read(tcon, rdata->got_bytes); in smb2_readv_callback()
2578 cifs_stats_bytes_read(tcon, rdata->got_bytes); in smb2_readv_callback()
2586 cifs_stats_fail_inc(tcon, SMB2_READ_HE); in smb2_readv_callback()
2610 io_parms.tcon = tlink_tcon(rdata->cfile->tlink); in smb2_async_readv()
2617 server = io_parms.tcon->ses->server; in smb2_async_readv()
2632 if (encryption_required(io_parms.tcon)) in smb2_async_readv()
2659 rc = cifs_call_async(io_parms.tcon->ses->server, &rqst, in smb2_async_readv()
2664 cifs_stats_fail_inc(io_parms.tcon, SMB2_READ_HE); in smb2_async_readv()
2686 struct cifs_ses *ses = io_parms->tcon->ses; in SMB2_read()
2693 if (encryption_required(io_parms->tcon)) in SMB2_read()
2710 cifs_stats_fail_inc(io_parms->tcon, SMB2_READ_HE); in SMB2_read()
2749 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); in smb2_writev_callback() local
2757 wdata->result = smb2_check_receive(mid, tcon->ses->server, 0); in smb2_writev_callback()
2786 cifs_stats_fail_inc(tcon, SMB2_WRITE_HE); in smb2_writev_callback()
2790 add_credits(tcon->ses->server, credits_received, 0); in smb2_writev_callback()
2801 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); in smb2_async_writev() local
2802 struct TCP_Server_Info *server = tcon->ses->server; in smb2_async_writev()
2806 rc = small_smb2_init(SMB2_WRITE, tcon, (void **) &req); in smb2_async_writev()
2819 if (encryption_required(tcon)) in smb2_async_writev()
2876 cifs_stats_fail_inc(tcon, SMB2_WRITE_HE); in smb2_async_writev()
2906 rc = small_smb2_init(SMB2_WRITE, io_parms->tcon, (void **) &req); in SMB2_write()
2910 if (io_parms->tcon->ses->server == NULL) in SMB2_write()
2913 if (encryption_required(io_parms->tcon)) in SMB2_write()
2937 rc = SendReceive2(xid, io_parms->tcon->ses, iov, n_vec + 1, in SMB2_write()
2943 cifs_stats_fail_inc(io_parms->tcon, SMB2_WRITE_HE); in SMB2_write()
3001 SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_query_directory() argument
3014 struct cifs_ses *ses = tcon->ses; in SMB2_query_directory()
3026 rc = small_smb2_init(SMB2_QUERY_DIRECTORY, tcon, (void **) &req); in SMB2_query_directory()
3030 if (encryption_required(tcon)) in SMB2_query_directory()
3087 cifs_stats_fail_inc(tcon, SMB2_QUERY_DIRECTORY_HE); in SMB2_query_directory()
3132 send_set_info(const unsigned int xid, struct cifs_tcon *tcon, in send_set_info() argument
3144 struct cifs_ses *ses = tcon->ses; in send_set_info()
3157 rc = small_smb2_init(SMB2_SET_INFO, tcon, (void **) &req); in send_set_info()
3163 if (encryption_required(tcon)) in send_set_info()
3199 cifs_stats_fail_inc(tcon, SMB2_SET_INFO_HE); in send_set_info()
3207 SMB2_rename(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_rename() argument
3231 rc = send_set_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_rename()
3239 SMB2_rmdir(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_rmdir() argument
3249 return send_set_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_rmdir()
3255 SMB2_set_hardlink(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_set_hardlink() argument
3279 rc = send_set_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_set_hardlink()
3287 SMB2_set_eof(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid, in SMB2_set_eof() argument
3300 return send_set_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_set_eof()
3304 return send_set_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_set_eof()
3310 SMB2_set_info(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_set_info() argument
3315 return send_set_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_set_info()
3321 SMB2_set_acl(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_set_acl() argument
3325 return send_set_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_set_acl()
3331 SMB2_set_ea(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_set_ea() argument
3335 return send_set_info(xid, tcon, persistent_fid, volatile_fid, in SMB2_set_ea()
3341 SMB2_oplock_break(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_oplock_break() argument
3350 rc = small_smb2_init(SMB2_OPLOCK_BREAK, tcon, (void **) &req); in SMB2_oplock_break()
3354 if (encryption_required(tcon)) in SMB2_oplock_break()
3362 rc = SendReceiveNoRsp(xid, tcon->ses, (char *) req, flags); in SMB2_oplock_break()
3366 cifs_stats_fail_inc(tcon, SMB2_OPLOCK_BREAK_HE); in SMB2_oplock_break()
3386 build_qfs_info_req(struct kvec *iov, struct cifs_tcon *tcon, int level, in build_qfs_info_req() argument
3394 if ((tcon->ses == NULL) || (tcon->ses->server == NULL)) in build_qfs_info_req()
3397 rc = small_smb2_init(SMB2_QUERY_INFO, tcon, (void **) &req); in build_qfs_info_req()
3418 SMB2_QFS_info(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_QFS_info() argument
3426 struct cifs_ses *ses = tcon->ses; in SMB2_QFS_info()
3430 rc = build_qfs_info_req(&iov, tcon, FS_FULL_SIZE_INFORMATION, in SMB2_QFS_info()
3436 if (encryption_required(tcon)) in SMB2_QFS_info()
3442 cifs_stats_fail_inc(tcon, SMB2_QUERY_INFO_HE); in SMB2_QFS_info()
3461 SMB2_QFS_attr(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_QFS_attr() argument
3469 struct cifs_ses *ses = tcon->ses; in SMB2_QFS_attr()
3490 rc = build_qfs_info_req(&iov, tcon, level, max_len, in SMB2_QFS_attr()
3495 if (encryption_required(tcon)) in SMB2_QFS_attr()
3501 cifs_stats_fail_inc(tcon, SMB2_QUERY_INFO_HE); in SMB2_QFS_attr()
3513 memcpy(&tcon->fsAttrInfo, 4 /* RFC1001 len */ + offset in SMB2_QFS_attr()
3517 memcpy(&tcon->fsDevInfo, 4 /* RFC1001 len */ + offset in SMB2_QFS_attr()
3522 tcon->ss_flags = le32_to_cpu(ss_info->Flags); in SMB2_QFS_attr()
3523 tcon->perf_sector_size = in SMB2_QFS_attr()
3528 tcon->vol_serial_number = vol_info->VolumeSerialNumber; in SMB2_QFS_attr()
3529 tcon->vol_create_time = vol_info->VolumeCreationTime; in SMB2_QFS_attr()
3538 smb2_lockv(const unsigned int xid, struct cifs_tcon *tcon, in smb2_lockv() argument
3552 rc = small_smb2_init(SMB2_LOCK, tcon, (void **) &req); in smb2_lockv()
3556 if (encryption_required(tcon)) in smb2_lockv()
3574 cifs_stats_inc(&tcon->stats.cifs_stats.num_locks); in smb2_lockv()
3575 rc = SendReceive2(xid, tcon->ses, iov, 2, &resp_buf_type, flags, in smb2_lockv()
3580 cifs_stats_fail_inc(tcon, SMB2_LOCK_HE); in smb2_lockv()
3587 SMB2_lock(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_lock() argument
3600 return smb2_lockv(xid, tcon, persist_fid, volatile_fid, pid, 1, &lock); in SMB2_lock()
3604 SMB2_lease_break(const unsigned int xid, struct cifs_tcon *tcon, in SMB2_lease_break() argument
3612 rc = small_smb2_init(SMB2_OPLOCK_BREAK, tcon, (void **) &req); in SMB2_lease_break()
3616 if (encryption_required(tcon)) in SMB2_lease_break()
3626 rc = SendReceiveNoRsp(xid, tcon->ses, (char *) req, flags); in SMB2_lease_break()
3630 cifs_stats_fail_inc(tcon, SMB2_OPLOCK_BREAK_HE); in SMB2_lease_break()