Lines Matching +full:tcon +full:- +full:top
1 /* SPDX-License-Identifier: LGPL-2.1 */
51 * max attribute cache timeout (jiffies) - 2^30
160 struct shash_desc *hmacsha256; /* hmac-sha256 hash function, for SMB2 signatures */
162 struct shash_desc *aes_cmac; /* block-cipher based MAC function, for SMB3 signatures */
164 struct crypto_aead *enc; /* smb3 encryption AEAD TFM (AES-CCM and AES-GCM) */
165 struct crypto_aead *dec; /* smb3 decryption AEAD TFM (AES-CCM and AES-GCM) */
198 kfree(data->symlink_target); in cifs_free_open_info()
268 * message field DataRemaining for out-of-band data read (e.g through
298 unsigned int (*negotiate_wsize)(struct cifs_tcon *tcon, struct smb3_fs_context *ctx);
300 unsigned int (*negotiate_rsize)(struct cifs_tcon *tcon, struct smb3_fs_context *ctx);
323 int (*query_path_info)(const unsigned int xid, struct cifs_tcon *tcon,
327 int (*query_file_info)(const unsigned int xid, struct cifs_tcon *tcon,
330 int (*query_reparse_tag)(const unsigned int xid, struct cifs_tcon *tcon,
334 int (*get_srv_inum)(const unsigned int xid, struct cifs_tcon *tcon,
354 umode_t mode, struct cifs_tcon *tcon,
358 struct cifs_tcon *tcon, const char *name,
384 /* open a file for non-posix mounts */
387 /* set fid protocol-specific info */
393 void (*close_getattr)(const unsigned int xid, struct cifs_tcon *tcon,
452 int (*set_integrity)(const unsigned int, struct cifs_tcon *tcon,
454 int (*enum_snapshots)(const unsigned int xid, struct cifs_tcon *tcon,
506 /* init transform request - used for encryption for now */
517 struct cifs_tcon *tcon,
525 struct cifs_tcon *tcon,
530 int (*fiemap)(struct cifs_tcon *tcon, struct cifsFileInfo *,
561 #define HEADER_SIZE(server) (server->vals->header_size)
562 #define MAX_HEADER_SIZE(server) (server->vals->max_header_size)
563 #define HEADER_PREAMBLE_SIZE(server) (server->vals->header_preamble_size)
564 #define MID_HEADER_SIZE(server) (HEADER_SIZE(server) - 1 - HEADER_PREAMBLE_SIZE(server))
660 /* message size the server can send or receive for non-raw SMBs */
668 __u64 CurrentMid; /* multiplex id - rotating counter, protected by GlobalMid_Lock */
726 bool noblockcnt; /* use non-blocking connect() */
730 * primary_server holds the ref-counted
733 #define CIFS_SERVER_IS_CHAN(server) (!!(server)->primary_server)
767 mutex_lock(&server->_srv_mutex); in cifs_server_lock()
768 server->nofs_flag = nofs_flag; in cifs_server_lock()
773 unsigned int nofs_flag = server->nofs_flag; in cifs_server_unlock()
775 mutex_unlock(&server->_srv_mutex); in cifs_server_unlock()
788 spin_lock(&server->req_lock); in in_flight()
789 num = server->in_flight; in in_flight()
790 spin_unlock(&server->req_lock); in in_flight()
798 spin_lock(&server->req_lock); in has_credits()
800 spin_unlock(&server->req_lock); in has_credits()
808 server->ops->add_credits(server, credits, optype); in add_credits()
815 if (credits->value) { in add_credits_and_wake_if()
816 server->ops->add_credits(server, credits, optype); in add_credits_and_wake_if()
817 wake_up(&server->request_q); in add_credits_and_wake_if()
824 server->ops->set_credits(server, val); in set_credits()
831 return server->ops->adjust_credits ? in adjust_credits()
832 server->ops->adjust_credits(server, credits, payload_size) : 0; in adjust_credits()
838 return cpu_to_le64(server->ops->get_next_mid(server)); in get_next_mid64()
844 __u16 mid = server->ops->get_next_mid(server); in get_next_mid()
847 * on-the-wire decoding. in get_next_mid()
855 if (server->ops->revert_current_mid) in revert_current_mid()
856 server->ops->revert_current_mid(server, val); in revert_current_mid()
863 unsigned int num = le16_to_cpu(shdr->CreditCharge); in revert_current_mid_from_hdr()
871 return le16_to_cpu(smb->Mid); in get_mid()
877 return mid == le16_to_cpu(smb->Mid); in compare_mid()
882 * we can allow up to 2^24-1, minus the size of a READ/WRITE_AND_X header, not
893 #define CIFS_MAX_WSIZE ((1<<24) - 1 - sizeof(WRITE_REQ) + 4)
894 #define CIFS_MAX_RSIZE ((1<<24) - sizeof(READ_RSP) + 4)
898 * of 2^17-1 minus the size of the call header. That allows for a read or
901 #define CIFS_MAX_RFC1002_WSIZE ((1<<17) - 1 - sizeof(WRITE_REQ) + 4)
902 #define CIFS_MAX_RFC1002_RSIZE ((1<<17) - 1 - sizeof(READ_RSP) + 4)
915 …s.msdn.com/b/openspecification/archive/2009/04/10/smb-maximum-transmit-buffer-size-and-performance…
921 * Macros to allow the TCP_Server_Info->net field and related code to drop out
929 return srv->net; in cifs_net_ns()
934 srv->net = net; in cifs_set_net_ns()
967 list_del_init(&iface->iface_head); in release_iface()
975 * return -1 otherwise.
983 if (a->speed == b->speed) { in iface_cmp()
984 if (a->rdma_capable == b->rdma_capable) { in iface_cmp()
985 if (a->rss_capable == b->rss_capable) { in iface_cmp()
986 cmp_ret = memcmp(&a->sockaddr, &b->sockaddr, in iface_cmp()
987 sizeof(a->sockaddr)); in iface_cmp()
993 return -1; in iface_cmp()
994 } else if (a->rss_capable > b->rss_capable) in iface_cmp()
997 return -1; in iface_cmp()
998 } else if (a->rdma_capable > b->rdma_capable) in iface_cmp()
1001 return -1; in iface_cmp()
1002 } else if (a->speed > b->speed) in iface_cmp()
1005 return -1; in iface_cmp()
1028 unsigned overrideSecFlg; /* if non-zero override global sec flags */
1073 ((1UL << (ses)->chan_count) - 1)
1075 (!(ses)->chans_need_reconnect)
1077 ((ses)->chans_need_reconnect == CIFS_ALL_CHANNELS_SET(ses))
1079 ((ses)->chans_need_reconnect = CIFS_ALL_CHANNELS_SET(ses))
1081 test_bit((index), &(ses)->chans_need_reconnect)
1083 ((ses)->chans[(index)].in_reconnect)
1095 * We will ask for sess and tcon reconnection only if all the
1097 * enable the sessions on top to continue to live till any
1107 return ses->server->vals->cap_unix & ses->capabilities; in cap_unix()
1158 char *password; /* for share-level security */
1213 bool need_reopen_files:1; /* need to reopen tcon file handles */
1223 __u64 snapshot_time; /* for timewarp tokens - timestamp of snapshot */
1244 * This is a refcounted and timestamped container for a tcon pointer. The
1245 * container holds a tcon reference. It is considered safe to free one of
1267 return tlink->tl_tcon; in tlink_tcon()
1273 return cifs_sb->master_tlink; in cifs_sb_master_tlink()
1282 atomic_inc(&tlink->tl_count); in cifs_get_tlink()
1340 #define ACL_NO_MODE ((umode_t)(-1))
1342 struct cifs_tcon *tcon; member
1375 /* following two lists are protected by tcon->open_file_lock */
1376 struct list_head tlist; /* pointer to next fid owned by tcon */
1378 /* lock list below protected by cifsi->lock_sem */
1412 struct cifs_tcon *tcon; member
1498 * cfile->file_info_lock held.
1503 ++cifs_file->count; in cifsFileInfo_get_locked()
1518 #define CIFS_CACHE_READ(cinode) ((cinode->oplock & CIFS_CACHE_READ_FLG) || (CIFS_SB(cinode->netfs.i…
1519 #define CIFS_CACHE_HANDLE(cinode) (cinode->oplock & CIFS_CACHE_HANDLE_FLG)
1520 #define CIFS_CACHE_WRITE(cinode) ((cinode->oplock & CIFS_CACHE_WRITE_FLG) || (CIFS_SB(cinode->netfs…
1554 u64 server_eof; /* current file size on server -- protected by i_lock */
1573 return sb->s_fs_info; in CIFS_SB()
1579 return CIFS_SB(file_inode(file)->i_sb); in CIFS_FILE_SB()
1584 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) in CIFS_DIR_SEP()
1607 static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon, in cifs_stats_bytes_written() argument
1611 spin_lock(&tcon->stat_lock); in cifs_stats_bytes_written()
1612 tcon->bytes_written += bytes; in cifs_stats_bytes_written()
1613 spin_unlock(&tcon->stat_lock); in cifs_stats_bytes_written()
1617 static inline void cifs_stats_bytes_read(struct cifs_tcon *tcon, in cifs_stats_bytes_read() argument
1620 spin_lock(&tcon->stat_lock); in cifs_stats_bytes_read()
1621 tcon->bytes_read += bytes; in cifs_stats_bytes_read()
1622 spin_unlock(&tcon->stat_lock); in cifs_stats_bytes_read()
1631 * - This will be called by cifsd, with no locks held.
1632 * - The mid will still be on the pending_mid_q.
1633 * - mid->resp_buf will point to the current buffer.
1646 * - it will be called by cifsd, with no locks held
1647 * - the mid will be removed from any lists
1692 struct cifs_tcon *tcon; member
1702 atomic_inc(&server->in_send); in cifs_in_send_inc()
1707 atomic_dec(&server->in_send); in cifs_in_send_dec()
1712 atomic_inc(&server->num_waiters); in cifs_num_waiters_inc()
1717 atomic_dec(&server->num_waiters); in cifs_num_waiters_dec()
1723 mid->when_sent = jiffies; in cifs_save_when_sent()
1763 kfree(param->path_name); in free_dfs_info_param()
1764 kfree(param->node_name); in free_dfs_info_param()
1784 case -EINTR: in is_interrupt_error()
1785 case -ERESTARTSYS: in is_interrupt_error()
1786 case -ERESTARTNOHAND: in is_interrupt_error()
1787 case -ERESTARTNOINTR: in is_interrupt_error()
1795 if (is_interrupt_error(error) || error == -EAGAIN) in is_retryable_error()
1828 #define CIFS_LOG_ERROR 0x010 /* log NT STATUS if non-zero */
1891 * (top to bottom).
1894 * this in the comments on top of your function definition.
1912 * vol_info->ctx_lock vol_info->ctx
1913 * cifs_sb_info->tlink_tree_lock cifs_sb_info->tlink_tree cifs_setup_cifs_sb
1914 * TCP_Server_Info-> TCP_Server_Info cifs_get_tcp_session
1916 * TCP_Server_Info->srv_mutex TCP_Server_Info cifs_get_tcp_session
1917 * cifs_ses->session_mutex cifs_ses sesInfoAlloc
1919 * cifs_tcon->open_file_lock cifs_tcon->openFileList tconInfoAlloc
1920 * cifs_tcon->pending_opens
1921 * cifs_tcon->stat_lock cifs_tcon->bytes_read tconInfoAlloc
1922 * cifs_tcon->bytes_written
1927 * TCP_Server_Info->srv_lock (anything in struct not protected by another lock and can change)
1928 * TCP_Server_Info->mid_lock TCP_Server_Info->pending_mid_q cifs_get_tcp_session
1929 * ->CurrentMid
1931 * TCP_Server_Info->req_lock TCP_Server_Info->in_flight cifs_get_tcp_session
1932 * ->credits
1933 * ->echo_credits
1934 * ->oplock_credits
1935 * ->reconnect_instance
1936 * cifs_ses->ses_lock (anything that is not protected by another lock and can change)
1937 * cifs_ses->iface_lock cifs_ses->iface_list sesInfoAlloc
1938 * ->iface_count
1939 * ->iface_last_update
1940 * cifs_ses->chan_lock cifs_ses->chans
1941 * ->chans_need_reconnect
1942 * ->chans_in_reconnect
1943 * cifs_tcon->tc_lock (anything that is not protected by another lock and can change)
1944 * cifsInodeInfo->open_file_lock cifsInodeInfo->openFileList cifs_alloc_inode
1945 * cifsInodeInfo->writers_lock cifsInodeInfo->writers cifsInodeInfo_alloc
1946 * cifsInodeInfo->lock_sem cifsInodeInfo->llist cifs_init_once
1947 * ->can_cache_brlcks
1948 * cifsInodeInfo->deferred_lock cifsInodeInfo->deferred_closes cifsInodeInfo_alloc
1949 * cached_fid->fid_mutex cifs_tcon->crfid tconInfoAlloc
1950 * cifsFileInfo->fh_mutex cifsFileInfo cifs_new_fileinfo
1951 * cifsFileInfo->file_info_lock cifsFileInfo->count cifs_new_fileinfo
1952 * ->invalidHandle initiate_cifs_search
1953 * ->oplock_break_cancelled
1954 * cifs_aio_ctx->aio_mutex cifs_aio_ctx cifs_aio_ctx_alloc
1974 * tcp session, and the list of tcon's per smb session. It also protects
1975 * the reference counters for the server, smb session, and tcon.
1977 * tcon->open_file_lock and that before file->file_info_lock since the
1978 * structure order is cifs_socket-->cifs_ses-->cifs_tcon-->cifs_file
2015 extern bool enable_gcm_256; /* allow optional negotiate of strongest signing (aes-gcm-256) */
2016 extern bool require_gcm_256; /* require use of strongest signing (aes-gcm-256) */
2084 return strcmp(server->vals->version_string, SMB1_VERSION_STRING) == 0; in is_smb1_server()
2087 static inline bool is_tcon_dfs(struct cifs_tcon *tcon) in is_tcon_dfs() argument
2090 * For SMB1, see MS-CIFS 2.4.55 SMB_COM_TREE_CONNECT_ANDX (0x75) and MS-CIFS 3.3.4.4 DFS in is_tcon_dfs()
2093 * For SMB2+, see MS-SMB2 2.2.10 SMB2 TREE_CONNECT Response and MS-SMB2 3.3.4.14 Server in is_tcon_dfs()
2096 if (!tcon || !tcon->ses || !tcon->ses->server) in is_tcon_dfs()
2098 return is_smb1_server(tcon->ses->server) ? tcon->Flags & SMB_SHARE_IS_IN_DFS : in is_tcon_dfs()
2099 tcon->share_flags & (SHI1005_FLAGS_DFS | SHI1005_FLAGS_DFS_ROOT); in is_tcon_dfs()
2102 static inline bool cifs_is_referral_server(struct cifs_tcon *tcon, in cifs_is_referral_server() argument
2107 * MS-DFSC 2.2.4 RESP_GET_DFS_REFERRAL. in cifs_is_referral_server()
2109 return is_tcon_dfs(tcon) || (ref && (ref->flags & DFSREF_REFERRAL_SERVER)); in cifs_is_referral_server()
2114 return (u64)fl->fl_end - fl->fl_start + 1; in cifs_flock_len()
2119 if (WARN_ON_ONCE(!ses || !ses->server)) in ntlmssp_workstation_name_size()
2125 if (ses->server->dialect <= SMB20_PROT_ID) in ntlmssp_workstation_name_size()
2126 return min_t(size_t, sizeof(ses->workstation_name), RFC1001_NAME_LEN_WITH_NULL); in ntlmssp_workstation_name_size()
2127 return sizeof(ses->workstation_name); in ntlmssp_workstation_name_size()
2132 memcpy(dst, src, (size_t)((u8 *)&src->AccessFlags - (u8 *)src)); in move_cifs_info_to_smb2()
2133 dst->AccessFlags = src->AccessFlags; in move_cifs_info_to_smb2()
2134 dst->CurrentByteOffset = src->CurrentByteOffset; in move_cifs_info_to_smb2()
2135 dst->Mode = src->Mode; in move_cifs_info_to_smb2()
2136 dst->AlignmentRequirement = src->AlignmentRequirement; in move_cifs_info_to_smb2()
2137 dst->FileNameLength = src->FileNameLength; in move_cifs_info_to_smb2()