summaryrefslogtreecommitdiff
path: root/fs/smb/client/smb2ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/smb/client/smb2ops.c')
-rw-r--r--fs/smb/client/smb2ops.c308
1 files changed, 15 insertions, 293 deletions
diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c
index 229dc6911237..6d009cf5d571 100644
--- a/fs/smb/client/smb2ops.c
+++ b/fs/smb/client/smb2ops.c
@@ -76,7 +76,7 @@ smb2_add_credits(struct TCP_Server_Info *server,
bool reconnect_with_invalid_credits = false;
spin_lock(&server->req_lock);
- val = server->ops->get_credits_field(server, optype);
+ val = smb2_get_credits_field(server, optype);
/* eg found case where write overlapping reconnect messed up credits */
if (((optype & CIFS_OP_MASK) == CIFS_NEG_OP) && (*val != 0))
@@ -438,9 +438,9 @@ smb2_dump_detail(void *buf, struct TCP_Server_Info *server)
cifs_server_dbg(VFS, "Cmd: %d Err: 0x%x Flags: 0x%x Mid: %llu Pid: %d\n",
shdr->Command, shdr->Status, shdr->Flags, shdr->MessageId,
shdr->Id.SyncId.ProcessId);
- if (!server->ops->check_message(buf, server->total_read, server)) {
+ if (!smb2_check_message(buf, server->total_read, server)) {
cifs_server_dbg(VFS, "smb buf %p len %u\n", buf,
- server->ops->calc_smb_size(buf));
+ smb2_calc_size(buf));
}
#endif
}
@@ -1189,7 +1189,7 @@ replay_again:
if (ses->server->ops->query_all_EAs) {
if (!ea_value) {
- rc = ses->server->ops->query_all_EAs(xid, tcon, path,
+ rc = smb2_query_eas(xid, tcon, path,
ea_name, NULL, 0,
cifs_sb);
if (rc == -ENODATA)
@@ -4595,14 +4595,14 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
}
if (server->ops->is_session_expired &&
- server->ops->is_session_expired(buf)) {
+ smb2_is_session_expired(buf)) {
if (!is_offloaded)
cifs_reconnect(server, true);
return -1;
}
if (server->ops->is_status_pending &&
- server->ops->is_status_pending(buf, server))
+ smb2_is_status_pending(buf, server))
return -1;
/* set up first two iov to get credits */
@@ -4616,7 +4616,7 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
cifs_dbg(FYI, "1: iov_base=%p iov_len=%zu\n",
rdata->iov[1].iov_base, rdata->iov[1].iov_len);
- rdata->result = server->ops->map_error(buf, true);
+ rdata->result = map_smb2_to_linux_error(buf, true);
if (rdata->result != 0) {
cifs_dbg(FYI, "%s: server returned error %d\n",
__func__, rdata->result);
@@ -4628,11 +4628,11 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
return 0;
}
- data_offset = server->ops->read_data_offset(buf);
+ data_offset = smb2_read_data_offset(buf);
#ifdef CONFIG_CIFS_SMB_DIRECT
use_rdma_mr = rdata->mr;
#endif
- data_len = server->ops->read_data_length(buf, use_rdma_mr);
+ data_len = smb2_read_data_length(buf, use_rdma_mr);
if (data_offset < server->vals->read_rsp_size) {
/*
@@ -4761,10 +4761,7 @@ static void smb2_decrypt_offload(struct work_struct *work)
#ifdef CONFIG_CIFS_STATS2
mid->when_received = jiffies;
#endif
- if (dw->server->ops->is_network_name_deleted)
- dw->server->ops->is_network_name_deleted(dw->buf,
- dw->server);
-
+ smb2_is_network_name_deleted(dw->buf, dw->server);
mid->callback(mid);
} else {
spin_lock(&dw->server->srv_lock);
@@ -4894,7 +4891,7 @@ receive_encrypted_read(struct TCP_Server_Info *server, struct mid_q_entry **mid,
&dw->buffer, dw->len, false);
if (rc >= 0) {
if (server->ops->is_network_name_deleted) {
- server->ops->is_network_name_deleted(buf,
+ smb2_is_network_name_deleted(buf,
server);
}
}
@@ -5104,7 +5101,7 @@ static int __cifs_sfu_make_node(unsigned int xid, struct inode *inode,
CREATE_OPTION_SPECIAL, ACL_NO_MODE);
oparms.fid = &fid;
- rc = server->ops->open(xid, &oparms, &oplock, NULL);
+ rc = smb2_open_file(xid, &oparms, &oplock, NULL);
if (rc)
return rc;
@@ -5114,9 +5111,9 @@ static int __cifs_sfu_make_node(unsigned int xid, struct inode *inode,
iov[1].iov_base = &pdev;
iov[1].iov_len = sizeof(pdev);
- rc = server->ops->sync_write(xid, &fid, &io_parms,
+ rc = smb2_sync_write(xid, &fid, &io_parms,
&bytes_written, iov, 1);
- server->ops->close(xid, tcon, &fid);
+ smb2_close_file(xid, tcon, &fid);
return rc;
}
@@ -5170,191 +5167,30 @@ static int smb2_make_node(unsigned int xid, struct inode *inode,
return rc;
}
-
struct smb_version_operations smb21_operations = {
- .compare_fids = smb2_compare_fids,
- .setup_request = smb2_setup_request,
- .setup_async_request = smb2_setup_async_request,
- .check_receive = smb2_check_receive,
- .add_credits = smb2_add_credits,
- .set_credits = smb2_set_credits,
- .get_credits_field = smb2_get_credits_field,
- .get_credits = smb2_get_credits,
- .wait_mtu_credits = smb2_wait_mtu_credits,
- .adjust_credits = smb2_adjust_credits,
- .get_next_mid = smb2_get_next_mid,
- .revert_current_mid = smb2_revert_current_mid,
- .read_data_offset = smb2_read_data_offset,
- .read_data_length = smb2_read_data_length,
- .map_error = map_smb2_to_linux_error,
- .find_mid = smb2_find_mid,
- .check_message = smb2_check_message,
- .dump_detail = smb2_dump_detail,
- .clear_stats = smb2_clear_stats,
- .print_stats = smb2_print_stats,
- .is_oplock_break = smb2_is_valid_oplock_break,
- .handle_cancelled_mid = smb2_handle_cancelled_mid,
+ /* send_cancel is missing */
.downgrade_oplock = smb2_downgrade_oplock,
- .need_neg = smb2_need_neg,
- .negotiate = smb2_negotiate,
.negotiate_wsize = smb2_negotiate_wsize,
.negotiate_rsize = smb2_negotiate_rsize,
- .sess_setup = SMB2_sess_setup,
- .logoff = SMB2_logoff,
- .tree_connect = SMB2_tcon,
- .tree_disconnect = SMB2_tdis,
.qfs_tcon = smb2_qfs_tcon,
- .is_path_accessible = smb2_is_path_accessible,
- .can_echo = smb2_can_echo,
- .echo = SMB2_echo,
- .query_path_info = smb2_query_path_info,
- .query_reparse_point = smb2_query_reparse_point,
- .get_srv_inum = smb2_get_srv_inum,
- .query_file_info = smb2_query_file_info,
- .set_path_size = smb2_set_path_size,
- .set_file_size = smb2_set_file_size,
- .set_file_info = smb2_set_file_info,
- .set_compression = smb2_set_compression,
- .mkdir = smb2_mkdir,
- .mkdir_setinfo = smb2_mkdir_setinfo,
- .rmdir = smb2_rmdir,
- .unlink = smb2_unlink,
- .rename = smb2_rename_path,
- .create_hardlink = smb2_create_hardlink,
- .parse_reparse_point = smb2_parse_reparse_point,
- .query_mf_symlink = smb3_query_mf_symlink,
- .create_mf_symlink = smb3_create_mf_symlink,
- .create_reparse_symlink = smb2_create_reparse_symlink,
- .open = smb2_open_file,
- .set_fid = smb2_set_fid,
- .close = smb2_close_file,
- .flush = smb2_flush_file,
- .async_readv = smb2_async_readv,
- .async_writev = smb2_async_writev,
- .sync_read = smb2_sync_read,
- .sync_write = smb2_sync_write,
- .query_dir_first = smb2_query_dir_first,
- .query_dir_next = smb2_query_dir_next,
- .close_dir = smb2_close_dir,
- .calc_smb_size = smb2_calc_size,
- .is_status_pending = smb2_is_status_pending,
- .is_session_expired = smb2_is_session_expired,
- .oplock_response = smb2_oplock_response,
.queryfs = smb2_queryfs,
- .mand_lock = smb2_mand_lock,
- .mand_unlock_range = smb2_unlock_range,
- .push_mand_locks = smb2_push_mandatory_locks,
- .get_lease_key = smb2_get_lease_key,
- .set_lease_key = smb2_set_lease_key,
- .new_lease_key = smb2_new_lease_key,
.calc_signature = smb2_calc_signature,
.is_read_op = smb21_is_read_op,
.set_oplock_level = smb21_set_oplock_level,
.create_lease_buf = smb2_create_lease_buf,
.parse_lease_buf = smb2_parse_lease_buf,
- .copychunk_range = smb2_copychunk_range,
- .wp_retry_size = smb2_wp_retry_size,
- .dir_needs_close = smb2_dir_needs_close,
- .enum_snapshots = smb3_enum_snapshots,
- .notify = smb3_notify,
- .get_dfs_refer = smb2_get_dfs_refer,
- .select_sectype = smb2_select_sectype,
-#ifdef CONFIG_CIFS_XATTR
- .query_all_EAs = smb2_query_eas,
- .set_EA = smb2_set_ea,
-#endif /* CIFS_XATTR */
- .get_acl = get_smb2_acl,
- .get_acl_by_fid = get_smb2_acl_by_fid,
- .set_acl = set_smb2_acl,
- .next_header = smb2_next_header,
- .ioctl_query_info = smb2_ioctl_query_info,
- .make_node = smb2_make_node,
- .fiemap = smb3_fiemap,
- .llseek = smb3_llseek,
- .is_status_io_timeout = smb2_is_status_io_timeout,
- .is_network_name_deleted = smb2_is_network_name_deleted,
};
struct smb_version_operations smb30_operations = {
- .compare_fids = smb2_compare_fids,
- .setup_request = smb2_setup_request,
- .setup_async_request = smb2_setup_async_request,
- .check_receive = smb2_check_receive,
- .add_credits = smb2_add_credits,
- .set_credits = smb2_set_credits,
- .get_credits_field = smb2_get_credits_field,
- .get_credits = smb2_get_credits,
- .wait_mtu_credits = smb2_wait_mtu_credits,
- .adjust_credits = smb2_adjust_credits,
- .get_next_mid = smb2_get_next_mid,
- .revert_current_mid = smb2_revert_current_mid,
- .read_data_offset = smb2_read_data_offset,
- .read_data_length = smb2_read_data_length,
- .map_error = map_smb2_to_linux_error,
- .find_mid = smb2_find_mid,
- .check_message = smb2_check_message,
- .dump_detail = smb2_dump_detail,
- .clear_stats = smb2_clear_stats,
- .print_stats = smb2_print_stats,
.dump_share_caps = smb2_dump_share_caps,
- .is_oplock_break = smb2_is_valid_oplock_break,
- .handle_cancelled_mid = smb2_handle_cancelled_mid,
.downgrade_oplock = smb3_downgrade_oplock,
- .need_neg = smb2_need_neg,
- .negotiate = smb2_negotiate,
.negotiate_wsize = smb3_negotiate_wsize,
.negotiate_rsize = smb3_negotiate_rsize,
- .sess_setup = SMB2_sess_setup,
- .logoff = SMB2_logoff,
- .tree_connect = SMB2_tcon,
- .tree_disconnect = SMB2_tdis,
.qfs_tcon = smb3_qfs_tcon,
.query_server_interfaces = SMB3_request_interfaces,
- .is_path_accessible = smb2_is_path_accessible,
- .can_echo = smb2_can_echo,
- .echo = SMB2_echo,
- .query_path_info = smb2_query_path_info,
/* WSL tags introduced long after smb2.1, enable for SMB3, 3.11 only */
- .query_reparse_point = smb2_query_reparse_point,
- .get_srv_inum = smb2_get_srv_inum,
- .query_file_info = smb2_query_file_info,
- .set_path_size = smb2_set_path_size,
- .set_file_size = smb2_set_file_size,
- .set_file_info = smb2_set_file_info,
- .set_compression = smb2_set_compression,
- .mkdir = smb2_mkdir,
- .mkdir_setinfo = smb2_mkdir_setinfo,
- .rmdir = smb2_rmdir,
- .unlink = smb2_unlink,
- .rename = smb2_rename_path,
- .create_hardlink = smb2_create_hardlink,
- .parse_reparse_point = smb2_parse_reparse_point,
- .query_mf_symlink = smb3_query_mf_symlink,
- .create_mf_symlink = smb3_create_mf_symlink,
- .create_reparse_symlink = smb2_create_reparse_symlink,
- .open = smb2_open_file,
- .set_fid = smb2_set_fid,
- .close = smb2_close_file,
.close_getattr = smb2_close_getattr,
- .flush = smb2_flush_file,
- .async_readv = smb2_async_readv,
- .async_writev = smb2_async_writev,
- .sync_read = smb2_sync_read,
- .sync_write = smb2_sync_write,
- .query_dir_first = smb2_query_dir_first,
- .query_dir_next = smb2_query_dir_next,
- .close_dir = smb2_close_dir,
- .calc_smb_size = smb2_calc_size,
- .is_status_pending = smb2_is_status_pending,
- .is_session_expired = smb2_is_session_expired,
- .oplock_response = smb2_oplock_response,
.queryfs = smb2_queryfs,
- .mand_lock = smb2_mand_lock,
- .mand_unlock_range = smb2_unlock_range,
- .push_mand_locks = smb2_push_mandatory_locks,
- .get_lease_key = smb2_get_lease_key,
- .set_lease_key = smb2_set_lease_key,
- .new_lease_key = smb2_new_lease_key,
.generate_signingkey = generate_smb30signingkey,
.calc_signature = smb3_calc_signature,
.set_integrity = smb3_set_integrity,
@@ -5362,152 +5198,38 @@ struct smb_version_operations smb30_operations = {
.set_oplock_level = smb3_set_oplock_level,
.create_lease_buf = smb3_create_lease_buf,
.parse_lease_buf = smb3_parse_lease_buf,
- .copychunk_range = smb2_copychunk_range,
.duplicate_extents = smb2_duplicate_extents,
.validate_negotiate = smb3_validate_negotiate,
- .wp_retry_size = smb2_wp_retry_size,
- .dir_needs_close = smb2_dir_needs_close,
.fallocate = smb3_fallocate,
- .enum_snapshots = smb3_enum_snapshots,
- .notify = smb3_notify,
.init_transform_rq = smb3_init_transform_rq,
.is_transform_hdr = smb3_is_transform_hdr,
.receive_transform = smb3_receive_transform,
- .get_dfs_refer = smb2_get_dfs_refer,
- .select_sectype = smb2_select_sectype,
-#ifdef CONFIG_CIFS_XATTR
- .query_all_EAs = smb2_query_eas,
- .set_EA = smb2_set_ea,
-#endif /* CIFS_XATTR */
- .get_acl = get_smb2_acl,
- .get_acl_by_fid = get_smb2_acl_by_fid,
- .set_acl = set_smb2_acl,
- .next_header = smb2_next_header,
- .ioctl_query_info = smb2_ioctl_query_info,
- .make_node = smb2_make_node,
- .fiemap = smb3_fiemap,
- .llseek = smb3_llseek,
- .is_status_io_timeout = smb2_is_status_io_timeout,
- .is_network_name_deleted = smb2_is_network_name_deleted,
};
struct smb_version_operations smb311_operations = {
- .compare_fids = smb2_compare_fids,
- .setup_request = smb2_setup_request,
- .setup_async_request = smb2_setup_async_request,
- .check_receive = smb2_check_receive,
- .add_credits = smb2_add_credits,
- .set_credits = smb2_set_credits,
- .get_credits_field = smb2_get_credits_field,
- .get_credits = smb2_get_credits,
- .wait_mtu_credits = smb2_wait_mtu_credits,
- .adjust_credits = smb2_adjust_credits,
- .get_next_mid = smb2_get_next_mid,
- .revert_current_mid = smb2_revert_current_mid,
- .read_data_offset = smb2_read_data_offset,
- .read_data_length = smb2_read_data_length,
- .map_error = map_smb2_to_linux_error,
- .find_mid = smb2_find_mid,
- .check_message = smb2_check_message,
- .dump_detail = smb2_dump_detail,
- .clear_stats = smb2_clear_stats,
- .print_stats = smb2_print_stats,
.dump_share_caps = smb2_dump_share_caps,
- .is_oplock_break = smb2_is_valid_oplock_break,
- .handle_cancelled_mid = smb2_handle_cancelled_mid,
.downgrade_oplock = smb3_downgrade_oplock,
- .need_neg = smb2_need_neg,
- .negotiate = smb2_negotiate,
.negotiate_wsize = smb3_negotiate_wsize,
.negotiate_rsize = smb3_negotiate_rsize,
- .sess_setup = SMB2_sess_setup,
- .logoff = SMB2_logoff,
- .tree_connect = SMB2_tcon,
- .tree_disconnect = SMB2_tdis,
.qfs_tcon = smb3_qfs_tcon,
.query_server_interfaces = SMB3_request_interfaces,
- .is_path_accessible = smb2_is_path_accessible,
- .can_echo = smb2_can_echo,
- .echo = SMB2_echo,
- .query_path_info = smb2_query_path_info,
- .query_reparse_point = smb2_query_reparse_point,
- .get_srv_inum = smb2_get_srv_inum,
- .query_file_info = smb2_query_file_info,
- .set_path_size = smb2_set_path_size,
- .set_file_size = smb2_set_file_size,
- .set_file_info = smb2_set_file_info,
- .set_compression = smb2_set_compression,
- .mkdir = smb2_mkdir,
- .mkdir_setinfo = smb2_mkdir_setinfo,
.posix_mkdir = smb311_posix_mkdir,
- .rmdir = smb2_rmdir,
- .unlink = smb2_unlink,
- .rename = smb2_rename_path,
- .create_hardlink = smb2_create_hardlink,
- .parse_reparse_point = smb2_parse_reparse_point,
- .query_mf_symlink = smb3_query_mf_symlink,
- .create_mf_symlink = smb3_create_mf_symlink,
- .create_reparse_symlink = smb2_create_reparse_symlink,
- .open = smb2_open_file,
- .set_fid = smb2_set_fid,
- .close = smb2_close_file,
.close_getattr = smb2_close_getattr,
- .flush = smb2_flush_file,
- .async_readv = smb2_async_readv,
- .async_writev = smb2_async_writev,
- .sync_read = smb2_sync_read,
- .sync_write = smb2_sync_write,
- .query_dir_first = smb2_query_dir_first,
- .query_dir_next = smb2_query_dir_next,
- .close_dir = smb2_close_dir,
- .calc_smb_size = smb2_calc_size,
- .is_status_pending = smb2_is_status_pending,
- .is_session_expired = smb2_is_session_expired,
- .oplock_response = smb2_oplock_response,
.queryfs = smb311_queryfs,
- .mand_lock = smb2_mand_lock,
- .mand_unlock_range = smb2_unlock_range,
- .push_mand_locks = smb2_push_mandatory_locks,
- .get_lease_key = smb2_get_lease_key,
- .set_lease_key = smb2_set_lease_key,
- .new_lease_key = smb2_new_lease_key,
.generate_signingkey = generate_smb311signingkey,
.calc_signature = smb3_calc_signature,
.set_integrity = smb3_set_integrity,
- .is_read_op = smb21_is_read_op,
.set_oplock_level = smb3_set_oplock_level,
.create_lease_buf = smb3_create_lease_buf,
.parse_lease_buf = smb3_parse_lease_buf,
- .copychunk_range = smb2_copychunk_range,
.duplicate_extents = smb2_duplicate_extents,
/* .validate_negotiate = smb3_validate_negotiate, */ /* not used in 3.11 */
- .wp_retry_size = smb2_wp_retry_size,
- .dir_needs_close = smb2_dir_needs_close,
.fallocate = smb3_fallocate,
- .enum_snapshots = smb3_enum_snapshots,
- .notify = smb3_notify,
.init_transform_rq = smb3_init_transform_rq,
.is_transform_hdr = smb3_is_transform_hdr,
.receive_transform = smb3_receive_transform,
- .get_dfs_refer = smb2_get_dfs_refer,
- .select_sectype = smb2_select_sectype,
-#ifdef CONFIG_CIFS_XATTR
- .query_all_EAs = smb2_query_eas,
- .set_EA = smb2_set_ea,
-#endif /* CIFS_XATTR */
- .get_acl = get_smb2_acl,
- .get_acl_by_fid = get_smb2_acl_by_fid,
- .set_acl = set_smb2_acl,
- .next_header = smb2_next_header,
- .ioctl_query_info = smb2_ioctl_query_info,
- .make_node = smb2_make_node,
- .fiemap = smb3_fiemap,
- .llseek = smb3_llseek,
- .is_status_io_timeout = smb2_is_status_io_timeout,
- .is_network_name_deleted = smb2_is_network_name_deleted,
};
-
struct smb_version_values smb21_values = {
.version_string = SMB21_VERSION_STRING,
.protocol_id = SMB21_PROT_ID,