mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
ksmbd: store fids as opaque u64 integers
There is no need to store the fids as le64 integers as they are opaque to the client and only used for equality. Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz> Reviewed-by: Tom Talpey <tom@talpey.com> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
351a59dace
commit
2d004c6cae
2 changed files with 56 additions and 72 deletions
|
@ -377,12 +377,8 @@ static void init_chained_smb2_rsp(struct ksmbd_work *work)
|
||||||
* command in the compound request
|
* command in the compound request
|
||||||
*/
|
*/
|
||||||
if (req->Command == SMB2_CREATE && rsp->Status == STATUS_SUCCESS) {
|
if (req->Command == SMB2_CREATE && rsp->Status == STATUS_SUCCESS) {
|
||||||
work->compound_fid =
|
work->compound_fid = ((struct smb2_create_rsp *)rsp)->VolatileFileId;
|
||||||
le64_to_cpu(((struct smb2_create_rsp *)rsp)->
|
work->compound_pfid = ((struct smb2_create_rsp *)rsp)->PersistentFileId;
|
||||||
VolatileFileId);
|
|
||||||
work->compound_pfid =
|
|
||||||
le64_to_cpu(((struct smb2_create_rsp *)rsp)->
|
|
||||||
PersistentFileId);
|
|
||||||
work->compound_sid = le64_to_cpu(rsp->SessionId);
|
work->compound_sid = le64_to_cpu(rsp->SessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2129,7 +2125,7 @@ static noinline int create_smb2_pipe(struct ksmbd_work *work)
|
||||||
rsp->EndofFile = cpu_to_le64(0);
|
rsp->EndofFile = cpu_to_le64(0);
|
||||||
rsp->FileAttributes = FILE_ATTRIBUTE_NORMAL_LE;
|
rsp->FileAttributes = FILE_ATTRIBUTE_NORMAL_LE;
|
||||||
rsp->Reserved2 = 0;
|
rsp->Reserved2 = 0;
|
||||||
rsp->VolatileFileId = cpu_to_le64(id);
|
rsp->VolatileFileId = id;
|
||||||
rsp->PersistentFileId = 0;
|
rsp->PersistentFileId = 0;
|
||||||
rsp->CreateContextsOffset = 0;
|
rsp->CreateContextsOffset = 0;
|
||||||
rsp->CreateContextsLength = 0;
|
rsp->CreateContextsLength = 0;
|
||||||
|
@ -3157,8 +3153,8 @@ int smb2_open(struct ksmbd_work *work)
|
||||||
|
|
||||||
rsp->Reserved2 = 0;
|
rsp->Reserved2 = 0;
|
||||||
|
|
||||||
rsp->PersistentFileId = cpu_to_le64(fp->persistent_id);
|
rsp->PersistentFileId = fp->persistent_id;
|
||||||
rsp->VolatileFileId = cpu_to_le64(fp->volatile_id);
|
rsp->VolatileFileId = fp->volatile_id;
|
||||||
|
|
||||||
rsp->CreateContextsOffset = 0;
|
rsp->CreateContextsOffset = 0;
|
||||||
rsp->CreateContextsLength = 0;
|
rsp->CreateContextsLength = 0;
|
||||||
|
@ -3865,9 +3861,7 @@ int smb2_query_dir(struct ksmbd_work *work)
|
||||||
goto err_out2;
|
goto err_out2;
|
||||||
}
|
}
|
||||||
|
|
||||||
dir_fp = ksmbd_lookup_fd_slow(work,
|
dir_fp = ksmbd_lookup_fd_slow(work, req->VolatileFileId, req->PersistentFileId);
|
||||||
le64_to_cpu(req->VolatileFileId),
|
|
||||||
le64_to_cpu(req->PersistentFileId));
|
|
||||||
if (!dir_fp) {
|
if (!dir_fp) {
|
||||||
rc = -EBADF;
|
rc = -EBADF;
|
||||||
goto err_out2;
|
goto err_out2;
|
||||||
|
@ -4088,12 +4082,12 @@ static int smb2_get_info_file_pipe(struct ksmbd_session *sess,
|
||||||
* Windows can sometime send query file info request on
|
* Windows can sometime send query file info request on
|
||||||
* pipe without opening it, checking error condition here
|
* pipe without opening it, checking error condition here
|
||||||
*/
|
*/
|
||||||
id = le64_to_cpu(req->VolatileFileId);
|
id = req->VolatileFileId;
|
||||||
if (!ksmbd_session_rpc_method(sess, id))
|
if (!ksmbd_session_rpc_method(sess, id))
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
ksmbd_debug(SMB, "FileInfoClass %u, FileId 0x%llx\n",
|
ksmbd_debug(SMB, "FileInfoClass %u, FileId 0x%llx\n",
|
||||||
req->FileInfoClass, le64_to_cpu(req->VolatileFileId));
|
req->FileInfoClass, req->VolatileFileId);
|
||||||
|
|
||||||
switch (req->FileInfoClass) {
|
switch (req->FileInfoClass) {
|
||||||
case FILE_STANDARD_INFORMATION:
|
case FILE_STANDARD_INFORMATION:
|
||||||
|
@ -4738,7 +4732,7 @@ static int smb2_get_info_file(struct ksmbd_work *work,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (work->next_smb2_rcv_hdr_off) {
|
if (work->next_smb2_rcv_hdr_off) {
|
||||||
if (!has_file_id(le64_to_cpu(req->VolatileFileId))) {
|
if (!has_file_id(req->VolatileFileId)) {
|
||||||
ksmbd_debug(SMB, "Compound request set FID = %llu\n",
|
ksmbd_debug(SMB, "Compound request set FID = %llu\n",
|
||||||
work->compound_fid);
|
work->compound_fid);
|
||||||
id = work->compound_fid;
|
id = work->compound_fid;
|
||||||
|
@ -4747,8 +4741,8 @@ static int smb2_get_info_file(struct ksmbd_work *work,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!has_file_id(id)) {
|
if (!has_file_id(id)) {
|
||||||
id = le64_to_cpu(req->VolatileFileId);
|
id = req->VolatileFileId;
|
||||||
pid = le64_to_cpu(req->PersistentFileId);
|
pid = req->PersistentFileId;
|
||||||
}
|
}
|
||||||
|
|
||||||
fp = ksmbd_lookup_fd_slow(work, id, pid);
|
fp = ksmbd_lookup_fd_slow(work, id, pid);
|
||||||
|
@ -5113,7 +5107,7 @@ static int smb2_get_info_sec(struct ksmbd_work *work,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (work->next_smb2_rcv_hdr_off) {
|
if (work->next_smb2_rcv_hdr_off) {
|
||||||
if (!has_file_id(le64_to_cpu(req->VolatileFileId))) {
|
if (!has_file_id(req->VolatileFileId)) {
|
||||||
ksmbd_debug(SMB, "Compound request set FID = %llu\n",
|
ksmbd_debug(SMB, "Compound request set FID = %llu\n",
|
||||||
work->compound_fid);
|
work->compound_fid);
|
||||||
id = work->compound_fid;
|
id = work->compound_fid;
|
||||||
|
@ -5122,8 +5116,8 @@ static int smb2_get_info_sec(struct ksmbd_work *work,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!has_file_id(id)) {
|
if (!has_file_id(id)) {
|
||||||
id = le64_to_cpu(req->VolatileFileId);
|
id = req->VolatileFileId;
|
||||||
pid = le64_to_cpu(req->PersistentFileId);
|
pid = req->PersistentFileId;
|
||||||
}
|
}
|
||||||
|
|
||||||
fp = ksmbd_lookup_fd_slow(work, id, pid);
|
fp = ksmbd_lookup_fd_slow(work, id, pid);
|
||||||
|
@ -5221,7 +5215,7 @@ static noinline int smb2_close_pipe(struct ksmbd_work *work)
|
||||||
struct smb2_close_req *req = smb2_get_msg(work->request_buf);
|
struct smb2_close_req *req = smb2_get_msg(work->request_buf);
|
||||||
struct smb2_close_rsp *rsp = smb2_get_msg(work->response_buf);
|
struct smb2_close_rsp *rsp = smb2_get_msg(work->response_buf);
|
||||||
|
|
||||||
id = le64_to_cpu(req->VolatileFileId);
|
id = req->VolatileFileId;
|
||||||
ksmbd_session_rpc_close(work->sess, id);
|
ksmbd_session_rpc_close(work->sess, id);
|
||||||
|
|
||||||
rsp->StructureSize = cpu_to_le16(60);
|
rsp->StructureSize = cpu_to_le16(60);
|
||||||
|
@ -5280,7 +5274,7 @@ int smb2_close(struct ksmbd_work *work)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (work->next_smb2_rcv_hdr_off &&
|
if (work->next_smb2_rcv_hdr_off &&
|
||||||
!has_file_id(le64_to_cpu(req->VolatileFileId))) {
|
!has_file_id(req->VolatileFileId)) {
|
||||||
if (!has_file_id(work->compound_fid)) {
|
if (!has_file_id(work->compound_fid)) {
|
||||||
/* file already closed, return FILE_CLOSED */
|
/* file already closed, return FILE_CLOSED */
|
||||||
ksmbd_debug(SMB, "file already closed\n");
|
ksmbd_debug(SMB, "file already closed\n");
|
||||||
|
@ -5299,7 +5293,7 @@ int smb2_close(struct ksmbd_work *work)
|
||||||
work->compound_pfid = KSMBD_NO_FID;
|
work->compound_pfid = KSMBD_NO_FID;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
volatile_id = le64_to_cpu(req->VolatileFileId);
|
volatile_id = req->VolatileFileId;
|
||||||
}
|
}
|
||||||
ksmbd_debug(SMB, "volatile_id = %llu\n", volatile_id);
|
ksmbd_debug(SMB, "volatile_id = %llu\n", volatile_id);
|
||||||
|
|
||||||
|
@ -5988,7 +5982,7 @@ int smb2_set_info(struct ksmbd_work *work)
|
||||||
if (work->next_smb2_rcv_hdr_off) {
|
if (work->next_smb2_rcv_hdr_off) {
|
||||||
req = ksmbd_req_buf_next(work);
|
req = ksmbd_req_buf_next(work);
|
||||||
rsp = ksmbd_resp_buf_next(work);
|
rsp = ksmbd_resp_buf_next(work);
|
||||||
if (!has_file_id(le64_to_cpu(req->VolatileFileId))) {
|
if (!has_file_id(req->VolatileFileId)) {
|
||||||
ksmbd_debug(SMB, "Compound request set FID = %llu\n",
|
ksmbd_debug(SMB, "Compound request set FID = %llu\n",
|
||||||
work->compound_fid);
|
work->compound_fid);
|
||||||
id = work->compound_fid;
|
id = work->compound_fid;
|
||||||
|
@ -6000,8 +5994,8 @@ int smb2_set_info(struct ksmbd_work *work)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!has_file_id(id)) {
|
if (!has_file_id(id)) {
|
||||||
id = le64_to_cpu(req->VolatileFileId);
|
id = req->VolatileFileId;
|
||||||
pid = le64_to_cpu(req->PersistentFileId);
|
pid = req->PersistentFileId;
|
||||||
}
|
}
|
||||||
|
|
||||||
fp = ksmbd_lookup_fd_slow(work, id, pid);
|
fp = ksmbd_lookup_fd_slow(work, id, pid);
|
||||||
|
@ -6079,7 +6073,7 @@ static noinline int smb2_read_pipe(struct ksmbd_work *work)
|
||||||
struct smb2_read_req *req = smb2_get_msg(work->request_buf);
|
struct smb2_read_req *req = smb2_get_msg(work->request_buf);
|
||||||
struct smb2_read_rsp *rsp = smb2_get_msg(work->response_buf);
|
struct smb2_read_rsp *rsp = smb2_get_msg(work->response_buf);
|
||||||
|
|
||||||
id = le64_to_cpu(req->VolatileFileId);
|
id = req->VolatileFileId;
|
||||||
|
|
||||||
inc_rfc1001_len(work->response_buf, 16);
|
inc_rfc1001_len(work->response_buf, 16);
|
||||||
rpc_resp = ksmbd_rpc_read(work->sess, id);
|
rpc_resp = ksmbd_rpc_read(work->sess, id);
|
||||||
|
@ -6215,8 +6209,7 @@ int smb2_read(struct ksmbd_work *work)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
fp = ksmbd_lookup_fd_slow(work, le64_to_cpu(req->VolatileFileId),
|
fp = ksmbd_lookup_fd_slow(work, req->VolatileFileId, req->PersistentFileId);
|
||||||
le64_to_cpu(req->PersistentFileId));
|
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
err = -ENOENT;
|
err = -ENOENT;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -6335,7 +6328,7 @@ static noinline int smb2_write_pipe(struct ksmbd_work *work)
|
||||||
size_t length;
|
size_t length;
|
||||||
|
|
||||||
length = le32_to_cpu(req->Length);
|
length = le32_to_cpu(req->Length);
|
||||||
id = le64_to_cpu(req->VolatileFileId);
|
id = req->VolatileFileId;
|
||||||
|
|
||||||
if (le16_to_cpu(req->DataOffset) ==
|
if (le16_to_cpu(req->DataOffset) ==
|
||||||
offsetof(struct smb2_write_req, Buffer)) {
|
offsetof(struct smb2_write_req, Buffer)) {
|
||||||
|
@ -6471,8 +6464,7 @@ int smb2_write(struct ksmbd_work *work)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
fp = ksmbd_lookup_fd_slow(work, le64_to_cpu(req->VolatileFileId),
|
fp = ksmbd_lookup_fd_slow(work, req->VolatileFileId, req->PersistentFileId);
|
||||||
le64_to_cpu(req->PersistentFileId));
|
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
err = -ENOENT;
|
err = -ENOENT;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -6584,12 +6576,9 @@ int smb2_flush(struct ksmbd_work *work)
|
||||||
|
|
||||||
WORK_BUFFERS(work, req, rsp);
|
WORK_BUFFERS(work, req, rsp);
|
||||||
|
|
||||||
ksmbd_debug(SMB, "SMB2_FLUSH called for fid %llu\n",
|
ksmbd_debug(SMB, "SMB2_FLUSH called for fid %llu\n", req->VolatileFileId);
|
||||||
le64_to_cpu(req->VolatileFileId));
|
|
||||||
|
|
||||||
err = ksmbd_vfs_fsync(work,
|
err = ksmbd_vfs_fsync(work, req->VolatileFileId, req->PersistentFileId);
|
||||||
le64_to_cpu(req->VolatileFileId),
|
|
||||||
le64_to_cpu(req->PersistentFileId));
|
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -6804,12 +6793,9 @@ int smb2_lock(struct ksmbd_work *work)
|
||||||
int prior_lock = 0;
|
int prior_lock = 0;
|
||||||
|
|
||||||
ksmbd_debug(SMB, "Received lock request\n");
|
ksmbd_debug(SMB, "Received lock request\n");
|
||||||
fp = ksmbd_lookup_fd_slow(work,
|
fp = ksmbd_lookup_fd_slow(work, req->VolatileFileId, req->PersistentFileId);
|
||||||
le64_to_cpu(req->VolatileFileId),
|
|
||||||
le64_to_cpu(req->PersistentFileId));
|
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
ksmbd_debug(SMB, "Invalid file id for lock : %llu\n",
|
ksmbd_debug(SMB, "Invalid file id for lock : %llu\n", req->VolatileFileId);
|
||||||
le64_to_cpu(req->VolatileFileId));
|
|
||||||
err = -ENOENT;
|
err = -ENOENT;
|
||||||
goto out2;
|
goto out2;
|
||||||
}
|
}
|
||||||
|
@ -7164,8 +7150,8 @@ static int fsctl_copychunk(struct ksmbd_work *work,
|
||||||
|
|
||||||
ci_rsp = (struct copychunk_ioctl_rsp *)&rsp->Buffer[0];
|
ci_rsp = (struct copychunk_ioctl_rsp *)&rsp->Buffer[0];
|
||||||
|
|
||||||
rsp->VolatileFileId = cpu_to_le64(volatile_id);
|
rsp->VolatileFileId = volatile_id;
|
||||||
rsp->PersistentFileId = cpu_to_le64(persistent_id);
|
rsp->PersistentFileId = persistent_id;
|
||||||
ci_rsp->ChunksWritten =
|
ci_rsp->ChunksWritten =
|
||||||
cpu_to_le32(ksmbd_server_side_copy_max_chunk_count());
|
cpu_to_le32(ksmbd_server_side_copy_max_chunk_count());
|
||||||
ci_rsp->ChunkBytesWritten =
|
ci_rsp->ChunkBytesWritten =
|
||||||
|
@ -7379,8 +7365,8 @@ static int fsctl_query_iface_info_ioctl(struct ksmbd_conn *conn,
|
||||||
if (nii_rsp)
|
if (nii_rsp)
|
||||||
nii_rsp->Next = 0;
|
nii_rsp->Next = 0;
|
||||||
|
|
||||||
rsp->PersistentFileId = cpu_to_le64(SMB2_NO_FID);
|
rsp->PersistentFileId = SMB2_NO_FID;
|
||||||
rsp->VolatileFileId = cpu_to_le64(SMB2_NO_FID);
|
rsp->VolatileFileId = SMB2_NO_FID;
|
||||||
return nbytes;
|
return nbytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7547,9 +7533,7 @@ static int fsctl_request_resume_key(struct ksmbd_work *work,
|
||||||
{
|
{
|
||||||
struct ksmbd_file *fp;
|
struct ksmbd_file *fp;
|
||||||
|
|
||||||
fp = ksmbd_lookup_fd_slow(work,
|
fp = ksmbd_lookup_fd_slow(work, req->VolatileFileId, req->PersistentFileId);
|
||||||
le64_to_cpu(req->VolatileFileId),
|
|
||||||
le64_to_cpu(req->PersistentFileId));
|
|
||||||
if (!fp)
|
if (!fp)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
|
@ -7579,7 +7563,7 @@ int smb2_ioctl(struct ksmbd_work *work)
|
||||||
if (work->next_smb2_rcv_hdr_off) {
|
if (work->next_smb2_rcv_hdr_off) {
|
||||||
req = ksmbd_req_buf_next(work);
|
req = ksmbd_req_buf_next(work);
|
||||||
rsp = ksmbd_resp_buf_next(work);
|
rsp = ksmbd_resp_buf_next(work);
|
||||||
if (!has_file_id(le64_to_cpu(req->VolatileFileId))) {
|
if (!has_file_id(req->VolatileFileId)) {
|
||||||
ksmbd_debug(SMB, "Compound request set FID = %llu\n",
|
ksmbd_debug(SMB, "Compound request set FID = %llu\n",
|
||||||
work->compound_fid);
|
work->compound_fid);
|
||||||
id = work->compound_fid;
|
id = work->compound_fid;
|
||||||
|
@ -7590,7 +7574,7 @@ int smb2_ioctl(struct ksmbd_work *work)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!has_file_id(id))
|
if (!has_file_id(id))
|
||||||
id = le64_to_cpu(req->VolatileFileId);
|
id = req->VolatileFileId;
|
||||||
|
|
||||||
if (req->Flags != cpu_to_le32(SMB2_0_IOCTL_IS_FSCTL)) {
|
if (req->Flags != cpu_to_le32(SMB2_0_IOCTL_IS_FSCTL)) {
|
||||||
rsp->hdr.Status = STATUS_NOT_SUPPORTED;
|
rsp->hdr.Status = STATUS_NOT_SUPPORTED;
|
||||||
|
@ -7656,8 +7640,8 @@ int smb2_ioctl(struct ksmbd_work *work)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
nbytes = sizeof(struct validate_negotiate_info_rsp);
|
nbytes = sizeof(struct validate_negotiate_info_rsp);
|
||||||
rsp->PersistentFileId = cpu_to_le64(SMB2_NO_FID);
|
rsp->PersistentFileId = SMB2_NO_FID;
|
||||||
rsp->VolatileFileId = cpu_to_le64(SMB2_NO_FID);
|
rsp->VolatileFileId = SMB2_NO_FID;
|
||||||
break;
|
break;
|
||||||
case FSCTL_QUERY_NETWORK_INTERFACE_INFO:
|
case FSCTL_QUERY_NETWORK_INTERFACE_INFO:
|
||||||
ret = fsctl_query_iface_info_ioctl(conn, rsp, out_buf_len);
|
ret = fsctl_query_iface_info_ioctl(conn, rsp, out_buf_len);
|
||||||
|
@ -7705,8 +7689,8 @@ int smb2_ioctl(struct ksmbd_work *work)
|
||||||
(struct copychunk_ioctl_req *)&req->Buffer[0],
|
(struct copychunk_ioctl_req *)&req->Buffer[0],
|
||||||
le32_to_cpu(req->CntCode),
|
le32_to_cpu(req->CntCode),
|
||||||
le32_to_cpu(req->InputCount),
|
le32_to_cpu(req->InputCount),
|
||||||
le64_to_cpu(req->VolatileFileId),
|
req->VolatileFileId,
|
||||||
le64_to_cpu(req->PersistentFileId),
|
req->PersistentFileId,
|
||||||
rsp);
|
rsp);
|
||||||
break;
|
break;
|
||||||
case FSCTL_SET_SPARSE:
|
case FSCTL_SET_SPARSE:
|
||||||
|
|
|
@ -116,8 +116,8 @@ struct create_durable_reconn_req {
|
||||||
union {
|
union {
|
||||||
__u8 Reserved[16];
|
__u8 Reserved[16];
|
||||||
struct {
|
struct {
|
||||||
__le64 PersistentFileId;
|
__u64 PersistentFileId;
|
||||||
__le64 VolatileFileId;
|
__u64 VolatileFileId;
|
||||||
} Fid;
|
} Fid;
|
||||||
} Data;
|
} Data;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
@ -126,8 +126,8 @@ struct create_durable_reconn_v2_req {
|
||||||
struct create_context ccontext;
|
struct create_context ccontext;
|
||||||
__u8 Name[8];
|
__u8 Name[8];
|
||||||
struct {
|
struct {
|
||||||
__le64 PersistentFileId;
|
__u64 PersistentFileId;
|
||||||
__le64 VolatileFileId;
|
__u64 VolatileFileId;
|
||||||
} Fid;
|
} Fid;
|
||||||
__u8 CreateGuid[16];
|
__u8 CreateGuid[16];
|
||||||
__le32 Flags;
|
__le32 Flags;
|
||||||
|
@ -269,8 +269,8 @@ struct smb2_ioctl_req {
|
||||||
__le16 StructureSize; /* Must be 57 */
|
__le16 StructureSize; /* Must be 57 */
|
||||||
__le16 Reserved; /* offset from start of SMB2 header to write data */
|
__le16 Reserved; /* offset from start of SMB2 header to write data */
|
||||||
__le32 CntCode;
|
__le32 CntCode;
|
||||||
__le64 PersistentFileId;
|
__u64 PersistentFileId;
|
||||||
__le64 VolatileFileId;
|
__u64 VolatileFileId;
|
||||||
__le32 InputOffset; /* Reserved MBZ */
|
__le32 InputOffset; /* Reserved MBZ */
|
||||||
__le32 InputCount;
|
__le32 InputCount;
|
||||||
__le32 MaxInputResponse;
|
__le32 MaxInputResponse;
|
||||||
|
@ -287,8 +287,8 @@ struct smb2_ioctl_rsp {
|
||||||
__le16 StructureSize; /* Must be 49 */
|
__le16 StructureSize; /* Must be 49 */
|
||||||
__le16 Reserved; /* offset from start of SMB2 header to write data */
|
__le16 Reserved; /* offset from start of SMB2 header to write data */
|
||||||
__le32 CntCode;
|
__le32 CntCode;
|
||||||
__le64 PersistentFileId;
|
__u64 PersistentFileId;
|
||||||
__le64 VolatileFileId;
|
__u64 VolatileFileId;
|
||||||
__le32 InputOffset; /* Reserved MBZ */
|
__le32 InputOffset; /* Reserved MBZ */
|
||||||
__le32 InputCount;
|
__le32 InputCount;
|
||||||
__le32 OutputOffset;
|
__le32 OutputOffset;
|
||||||
|
@ -357,7 +357,7 @@ struct file_object_buf_type1_ioctl_rsp {
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
struct resume_key_ioctl_rsp {
|
struct resume_key_ioctl_rsp {
|
||||||
__le64 ResumeKey[3];
|
__u64 ResumeKey[3];
|
||||||
__le32 ContextLength;
|
__le32 ContextLength;
|
||||||
__u8 Context[4]; /* ignored, Windows sets to 4 bytes of zero */
|
__u8 Context[4]; /* ignored, Windows sets to 4 bytes of zero */
|
||||||
} __packed;
|
} __packed;
|
||||||
|
@ -432,8 +432,8 @@ struct smb2_lock_req {
|
||||||
__le16 StructureSize; /* Must be 48 */
|
__le16 StructureSize; /* Must be 48 */
|
||||||
__le16 LockCount;
|
__le16 LockCount;
|
||||||
__le32 Reserved;
|
__le32 Reserved;
|
||||||
__le64 PersistentFileId;
|
__u64 PersistentFileId;
|
||||||
__le64 VolatileFileId;
|
__u64 VolatileFileId;
|
||||||
/* Followed by at least one */
|
/* Followed by at least one */
|
||||||
struct smb2_lock_element locks[1];
|
struct smb2_lock_element locks[1];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
@ -468,8 +468,8 @@ struct smb2_query_directory_req {
|
||||||
__u8 FileInformationClass;
|
__u8 FileInformationClass;
|
||||||
__u8 Flags;
|
__u8 Flags;
|
||||||
__le32 FileIndex;
|
__le32 FileIndex;
|
||||||
__le64 PersistentFileId;
|
__u64 PersistentFileId;
|
||||||
__le64 VolatileFileId;
|
__u64 VolatileFileId;
|
||||||
__le16 FileNameOffset;
|
__le16 FileNameOffset;
|
||||||
__le16 FileNameLength;
|
__le16 FileNameLength;
|
||||||
__le32 OutputBufferLength;
|
__le32 OutputBufferLength;
|
||||||
|
@ -515,8 +515,8 @@ struct smb2_query_info_req {
|
||||||
__le32 InputBufferLength;
|
__le32 InputBufferLength;
|
||||||
__le32 AdditionalInformation;
|
__le32 AdditionalInformation;
|
||||||
__le32 Flags;
|
__le32 Flags;
|
||||||
__le64 PersistentFileId;
|
__u64 PersistentFileId;
|
||||||
__le64 VolatileFileId;
|
__u64 VolatileFileId;
|
||||||
__u8 Buffer[1];
|
__u8 Buffer[1];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
@ -537,8 +537,8 @@ struct smb2_set_info_req {
|
||||||
__le16 BufferOffset;
|
__le16 BufferOffset;
|
||||||
__u16 Reserved;
|
__u16 Reserved;
|
||||||
__le32 AdditionalInformation;
|
__le32 AdditionalInformation;
|
||||||
__le64 PersistentFileId;
|
__u64 PersistentFileId;
|
||||||
__le64 VolatileFileId;
|
__u64 VolatileFileId;
|
||||||
__u8 Buffer[1];
|
__u8 Buffer[1];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue