This was supposed to be a shortcut to avoid passing dirfsp around as an explicit
function argument throughout the whole codebase when the new VFS design idea was
based on using *AT functions throughout the VFS.
Now that we've opted for basing the VFS on handles and *AT functions will only
be used in a much more limitted extent, it makes sense to remove this internal
dirfsp reference, otherwise the combination of internal fsp->dirfsp and
smb_fname->fsp is going to be a tough to wrap your head around.
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Fri Oct 2 21:00:05 UTC 2020 on sn-devel-184
static NTSTATUS skel_create_file(struct vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
static NTSTATUS skel_create_file(struct vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
{
return SMB_VFS_NEXT_CREATE_FILE(handle,
req,
- dirfsp,
smb_fname,
access_mask,
share_access,
otherwise.
* Change to Version 44 - will ship with 4.14.
* Version 44 - Remove dirfsp arg from struct files_struct
+ * Version 44 - Remove dirfsp arg to SMB_VFS_CREATE_FILE()
*/
#define SMB_VFS_INTERFACE_VERSION 44
mode_t mode);
NTSTATUS (*create_file_fn)(struct vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
mode_t mode);
NTSTATUS smb_vfs_call_create_file(struct vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
mode_t mode);
NTSTATUS vfs_not_implemented_create_file(struct vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
#define SMB_VFS_NEXT_OPENAT(handle, dirfsp, smb_fname, fsp, flags, mode) \
smb_vfs_call_openat((handle)->next, (dirfsp), (smb_fname), (fsp), (flags), (mode))
-#define SMB_VFS_CREATE_FILE(conn, req, dirfsp, smb_fname, access_mask, share_access, create_disposition, \
+#define SMB_VFS_CREATE_FILE(conn, req, smb_fname, access_mask, share_access, create_disposition, \
create_options, file_attributes, oplock_request, lease, allocation_size, private_flags, sd, ea_list, result, pinfo, in_context_blobs, out_context_blobs) \
- smb_vfs_call_create_file((conn)->vfs_handles, (req), (dirfsp), (smb_fname), (access_mask), (share_access), (create_disposition), \
+ smb_vfs_call_create_file((conn)->vfs_handles, (req), (smb_fname), (access_mask), (share_access), (create_disposition), \
(create_options), (file_attributes), (oplock_request), (lease), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo), \
(in_context_blobs), (out_context_blobs))
-#define SMB_VFS_NEXT_CREATE_FILE(handle, req, dirfsp, smb_fname, access_mask, share_access, create_disposition, \
+#define SMB_VFS_NEXT_CREATE_FILE(handle, req, smb_fname, access_mask, share_access, create_disposition, \
create_options, file_attributes, oplock_request, lease, allocation_size, private_flags, sd, ea_list, result, pinfo, in_context_blobs, out_context_blobs) \
- smb_vfs_call_create_file((handle)->next, (req), (dirfsp), (smb_fname), (access_mask), (share_access), (create_disposition), \
+ smb_vfs_call_create_file((handle)->next, (req), (smb_fname), (access_mask), (share_access), (create_disposition), \
(create_options), (file_attributes), (oplock_request), (lease), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo), \
(in_context_blobs), (out_context_blobs))
status = SMB_VFS_CREATE_FILE(
handle->conn, /* conn */
NULL, /* req */
- &handle->conn->cwd_fsp, /* dirfsp */
stream_name, /* fname */
FILE_GENERIC_WRITE, /* access_mask */
FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
status = SMB_VFS_CREATE_FILE(
handle->conn, /* conn */
NULL, /* req */
- &handle->conn->cwd_fsp, /* dirfsp */
stream_name, /* fname */
FILE_GENERIC_WRITE, /* access_mask */
FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
status = SMB_VFS_CREATE_FILE(
handle->conn,
NULL, /* req */
- &handle->conn->cwd_fsp, /* dirfsp */
adpath,
FILE_READ_DATA|FILE_WRITE_DATA,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
status = SMB_VFS_CREATE_FILE(
handle->conn, /* conn */
NULL, /* req */
- &handle->conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_READ_ATTRIBUTES, /* access_mask */
(FILE_SHARE_READ | FILE_SHARE_WRITE | /* share_access */
status = SMB_VFS_CREATE_FILE(
handle->conn,
NULL, /* req */
- &handle->conn->cwd_fsp, /* dirfsp */
sname,
FILE_READ_DATA|DELETE_ACCESS,
FILE_SHARE_READ,
status = SMB_VFS_CREATE_FILE(
handle->conn, /* conn */
NULL, /* req */
- &handle->conn->cwd_fsp, /* dirfsp */
adp_smb_fname,
access_mask,
share_access,
}
static NTSTATUS vfswrap_create_file(vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
const struct smb2_create_blobs *in_context_blobs,
struct smb2_create_blobs *out_context_blobs)
{
- return create_file_default(handle->conn, req, dirfsp, smb_fname,
+ return create_file_default(handle->conn, req, smb_fname,
access_mask, share_access,
create_disposition, create_options,
file_attributes, oplock_request, lease,
status = SMB_VFS_CREATE_FILE(
handle->conn, /* conn */
NULL, /* req */
- &handle->conn->cwd_fsp, /* dirfsp */
stream_name, /* fname */
FILE_READ_DATA, /* access_mask */
(FILE_SHARE_READ | FILE_SHARE_WRITE | /* share_access */
static NTSTATUS fruit_create_file(vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
}
status = SMB_VFS_NEXT_CREATE_FILE(
- handle, req, dirfsp, smb_fname,
+ handle, req, smb_fname,
access_mask, share_access,
create_disposition, create_options,
file_attributes, oplock_request,
status = SMB_VFS_NEXT_CREATE_FILE(
handle, /* conn */
NULL, /* req */
- &handle->conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_GENERIC_READ, /* access_mask */
FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
static NTSTATUS smb_full_audit_create_file(vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
result = SMB_VFS_NEXT_CREATE_FILE(
handle, /* handle */
req, /* req */
- dirfsp,
smb_fname, /* fname */
access_mask, /* access_mask */
share_access, /* share_access */
*/
static NTSTATUS mh_create_file(vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
status = SMB_VFS_NEXT_CREATE_FILE(
handle,
req,
- dirfsp,
smb_fname,
access_mask,
share_access,
status = SMB_VFS_NEXT_CREATE_FILE(
handle,
req,
- dirfsp,
clientFname,
access_mask,
share_access,
NTSTATUS vfs_not_implemented_create_file(struct vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
static NTSTATUS smb_time_audit_create_file(vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *fname,
uint32_t access_mask,
uint32_t share_access,
result = SMB_VFS_NEXT_CREATE_FILE(
handle, /* handle */
req, /* req */
- dirfsp, /* dirfsp */
fname, /* fname */
access_mask, /* access_mask */
share_access, /* share_access */
static NTSTATUS um_create_file(vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
return SMB_VFS_NEXT_CREATE_FILE(
handle,
req,
- dirfsp,
smb_fname,
access_mask,
share_access,
status = SMB_VFS_NEXT_CREATE_FILE(
handle,
req,
- dirfsp,
client_fname,
access_mask,
share_access,
static NTSTATUS vfs_worm_create_file(vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
}
status = SMB_VFS_NEXT_CREATE_FILE(
- handle, req, dirfsp, smb_fname, access_mask,
+ handle, req, smb_fname, access_mask,
share_access, create_disposition, create_options,
file_attributes, oplock_request, lease, allocation_size,
private_flags, sd, ea_list, result, pinfo,
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
NULL, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_GENERIC_READ, /* access_mask */
FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
NULL, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_GENERIC_READ, /* access_mask */
FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
nt_status = SMB_VFS_CREATE_FILE(
conn, /* conn */
NULL, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_GENERIC_READ, /* access_mask */
FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
nt_status = SMB_VFS_CREATE_FILE(
conn, /* conn */
NULL, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_READ_ATTRIBUTES, /* access_mask */
FILE_SHARE_READ|FILE_SHARE_WRITE, /* share_access */
nt_status = SMB_VFS_CREATE_FILE(
conn, /* conn */
NULL, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_WRITE_ATTRIBUTES, /* access_mask */
FILE_SHARE_READ|FILE_SHARE_WRITE, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
NULL, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_cp, /* fname */
FILE_WRITE_ATTRIBUTES, /* access_mask */
(FILE_SHARE_READ | FILE_SHARE_WRITE | /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
access_mask, /* access_mask */
share_access, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
access_mask, /* access_mask */
share_access, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_src, /* fname */
FILE_READ_DATA|FILE_READ_ATTRIBUTES|
FILE_READ_EA, /* access_mask */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_dst, /* fname */
FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|
FILE_WRITE_EA, /* access_mask */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_dname, /* fname */
FILE_READ_ATTRIBUTES, /* access_mask */
FILE_SHARE_NONE, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
NULL, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_cp, /* fname */
DELETE_ACCESS, /* access_mask */
(FILE_SHARE_READ | /* share_access */
NTSTATUS create_file_default(connection_struct *conn,
struct smb_request *req,
- struct files_struct **_dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
uint16_t lease_epoch);
NTSTATUS create_file_default(connection_struct *conn,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename * smb_fname,
uint32_t access_mask,
uint32_t share_access,
nt_status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_dname, /* dname */
FILE_LIST_DIRECTORY, /* access_mask */
FILE_SHARE_READ|
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
access_mask, /* access_mask */
share_mode, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
access_mask, /* access_mask */
share_mode, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
access_mask, /* access_mask */
share_mode, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_GENERIC_READ | FILE_GENERIC_WRITE, /* access_mask */
FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
status = SMB_VFS_CREATE_FILE
(conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
DELETE_ACCESS, /* access_mask */
FILE_SHARE_NONE, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_dname, /* fname */
DELETE_ACCESS, /* access_mask */
(FILE_SHARE_READ | FILE_SHARE_WRITE | /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_src, /* fname */
access_mask, /* access_mask */
(FILE_SHARE_READ | /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_src, /* fname */
access_mask, /* access_mask */
(FILE_SHARE_READ | /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
NULL, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_src, /* fname */
FILE_GENERIC_READ, /* access_mask */
FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
NULL, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_dst, /* fname */
FILE_GENERIC_WRITE, /* access_mask */
FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
status = SMB_VFS_CREATE_FILE(smb1req->conn,
smb1req,
- &smb1req->conn->cwd_fsp,
smb_fname,
in_desired_access,
in_share_access,
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_tmp, /* fname */
access_mask, /* access_mask */
share_access, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
access_mask, /* access_mask */
share_mode, /* share_access */
ntstatus = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_dname, /* dname */
FILE_LIST_DIRECTORY, /* access_mask */
FILE_SHARE_READ|
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname_tmp, /* fname */
FILE_WRITE_DATA, /* access_mask */
(FILE_SHARE_READ | FILE_SHARE_WRITE | /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_WRITE_DATA, /* access_mask */
(FILE_SHARE_READ | FILE_SHARE_WRITE | /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
FILE_READ_ATTRIBUTES, /* access_mask */
FILE_SHARE_NONE, /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
access_mask, /* access_mask */
(FILE_SHARE_READ | FILE_SHARE_WRITE | /* share_access */
status = SMB_VFS_CREATE_FILE(
conn, /* conn */
req, /* req */
- &conn->cwd_fsp, /* dirfsp */
smb_fname, /* fname */
DELETE_ACCESS, /* access_mask */
(FILE_SHARE_READ | FILE_SHARE_WRITE | /* share_access */
NTSTATUS smb_vfs_call_create_file(struct vfs_handle_struct *handle,
struct smb_request *req,
- struct files_struct **dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask,
uint32_t share_access,
{
VFS_FIND(create_file);
return handle->fns->create_file_fn(
- handle, req, dirfsp, smb_fname,
+ handle, req, smb_fname,
access_mask, share_access, create_disposition, create_options,
file_attributes, oplock_request, lease, allocation_size,
private_flags, sd, ea_list,
status = SMB_VFS_CREATE_FILE(
state.conn_tos->conn,
NULL, /* req */
- &state.conn_tos->conn->cwd_fsp,
smb_fname,
FILE_READ_ATTRIBUTES|READ_CONTROL_ACCESS,
FILE_SHARE_READ|FILE_SHARE_WRITE,