Usefull for benchmarking.
- DO NOT PUSH
FN_LOCAL_BOOL(acl_check_permissions, bAclCheckPermissions)
FN_LOCAL_BOOL(acl_group_control, bAclGroupControl)
FN_LOCAL_BOOL(acl_map_full_control, bAclMapFullControl)
+FN_LOCAL_BOOL(enable_copychunk, bEnableCopychunk)
FN_LOCAL_INTEGER(security_mask, iSecurity_mask)
FN_LOCAL_INTEGER(force_security_mode, iSecurity_force_mode)
FN_LOCAL_INTEGER(dir_security_mask, iDir_Security_mask)
.enum_list = NULL,
.flags = FLAG_ADVANCED,
},
+ {
+ .label = "enable copychunk",
+ .type = P_BOOL,
+ .p_class = P_LOCAL,
+ .offset = LOCAL_VAR(bEnableCopychunk),
+ .special = NULL,
+ .enum_list = NULL,
+ .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
+ },
{N_("Tuning Options"), P_SEP, P_SEPARATOR},
bool lp_acl_group_control(int );
bool lp_acl_map_full_control(int );
bool lp_durable_handles(int);
+bool lp_enable_copychunk(int);
int lp_create_mask(int );
int lp_force_create_mode(int );
int lp_security_mask(int );
.bAclGroupControl = false,
.bChangeNotify = true,
.bKernelChangeNotify = true,
+ .bEnableCopychunk = true,
.iallocation_roundup_size = SMB_ROUNDUP_ALLOCATION_SIZE,
.iAioReadSize = 0,
.iAioWriteSize = 0,
return tevent_req_post(req, ev);
break;
case FSCTL_SRV_REQUEST_RESUME_KEY:
- status = fsctl_srv_req_resume_key(state, ev, state->fsp,
- state->in_max_output,
- &state->out_output);
+ if (lp_enable_copychunk(state->smbreq->conn->params->service)) {
+ status = fsctl_srv_req_resume_key(state, ev, state->fsp,
+ state->in_max_output,
+ &state->out_output);
+ } else {
+ status = NT_STATUS_INVALID_DEVICE_REQUEST;
+ }
if (!tevent_req_nterror(req, status)) {
tevent_req_done(req);
}