return false;
}
-static bool skel_brl_cancel_windows(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock)
-{
- errno = ENOSYS;
- return false;
-}
-
static bool skel_strict_lock_check(struct vfs_handle_struct *handle,
struct files_struct *fsp,
struct lock_struct *plock)
.connectpath_fn = skel_connectpath,
.brl_lock_windows_fn = skel_brl_lock_windows,
.brl_unlock_windows_fn = skel_brl_unlock_windows,
- .brl_cancel_windows_fn = skel_brl_cancel_windows,
.strict_lock_check_fn = skel_strict_lock_check,
.translate_name_fn = skel_translate_name,
.fsctl_fn = skel_fsctl,
return SMB_VFS_NEXT_BRL_UNLOCK_WINDOWS(handle, msg_ctx, br_lck, plock);
}
-static bool skel_brl_cancel_windows(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock)
-{
- return SMB_VFS_NEXT_BRL_CANCEL_WINDOWS(handle, br_lck, plock);
-}
-
static bool skel_strict_lock_check(struct vfs_handle_struct *handle,
struct files_struct *fsp,
struct lock_struct *plock)
.connectpath_fn = skel_connectpath,
.brl_lock_windows_fn = skel_brl_lock_windows,
.brl_unlock_windows_fn = skel_brl_unlock_windows,
- .brl_cancel_windows_fn = skel_brl_cancel_windows,
.strict_lock_check_fn = skel_strict_lock_check,
.translate_name_fn = skel_translate_name,
.fsctl_fn = skel_fsctl,
/* Bump to version 40, Samba 4.10 will ship with that */
/* Version 40 - Add SMB_VFS_GETXATTRAT_SEND/RECV */
/* Version 40 - Add SMB_VFS_GET_DOS_ATTRIBUTES_SEND/RECV */
+/* Bump to version 41, Samba 4.11 will ship with that */
+/* Version 41 - Remove SMB_VFS_BRL_CANCEL_WINDOWS */
-#define SMB_VFS_INTERFACE_VERSION 40
+#define SMB_VFS_INTERFACE_VERSION 41
/*
All intercepted VFS operations must be declared as static functions inside module source
struct byte_range_lock *br_lck,
const struct lock_struct *plock);
- bool (*brl_cancel_windows_fn)(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock);
-
bool (*strict_lock_check_fn)(struct vfs_handle_struct *handle,
struct files_struct *fsp,
struct lock_struct *plock);
struct messaging_context *msg_ctx,
struct byte_range_lock *br_lck,
const struct lock_struct *plock);
-bool smb_vfs_call_brl_cancel_windows(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock);
bool smb_vfs_call_strict_lock_check(struct vfs_handle_struct *handle,
struct files_struct *fsp,
struct lock_struct *plock);
struct messaging_context *msg_ctx,
struct byte_range_lock *br_lck,
const struct lock_struct *plock);
-bool vfs_not_implemented_brl_cancel_windows(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock);
bool vfs_not_implemented_strict_lock_check(struct vfs_handle_struct *handle,
struct files_struct *fsp,
struct lock_struct *plock);
#define SMB_VFS_NEXT_BRL_UNLOCK_WINDOWS(handle, msg_ctx, br_lck, plock) \
smb_vfs_call_brl_unlock_windows((handle)->next, (msg_ctx), (br_lck), (plock))
-#define SMB_VFS_BRL_CANCEL_WINDOWS(conn, br_lck, plock) \
- smb_vfs_call_brl_cancel_windows((conn)->vfs_handles, (br_lck), (plock))
-#define SMB_VFS_NEXT_BRL_CANCEL_WINDOWS(handle, br_lck, plock) \
- smb_vfs_call_brl_cancel_windows((handle)->next, (br_lck), (plock))
-
#define SMB_VFS_STRICT_LOCK_CHECK(conn, fsp, plock) \
smb_vfs_call_strict_lock_check((conn)->vfs_handles, (fsp), (plock))
#define SMB_VFS_NEXT_STRICT_LOCK_CHECK(handle, fsp, plock) \
}
-bool smb_vfs_call_brl_cancel_windows(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock)
-{
- VFS_FIND(brl_cancel_windows);
- return handle->fns->brl_cancel_windows_fn(handle, br_lck, plock);
-}
-
-bool brl_lock_cancel_default(struct byte_range_lock *br_lck,
- struct lock_struct *plock)
-{
- return false;
-}
-
/****************************************************************************
Remove any locks associated with a open file.
We return True if this process owns any other Windows locks on this
br_off *psize,
enum brl_type *plock_type,
enum brl_flavour lock_flav);
-bool brl_lock_cancel_default(struct byte_range_lock *br_lck,
- struct lock_struct *plock);
bool brl_mark_disconnected(struct files_struct *fsp);
bool brl_reconnect_disconnected(struct files_struct *fsp);
void brl_close_fnum(struct messaging_context *msg_ctx,
return brl_unlock_windows_default(msg_ctx, br_lck, plock);
}
-static bool vfswrap_brl_cancel_windows(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock)
-{
- SMB_ASSERT(plock->lock_flav == WINDOWS_LOCK);
-
- /* Note: blr is not used in the default implementation. */
- return brl_lock_cancel_default(br_lck, plock);
-}
-
static bool vfswrap_strict_lock_check(struct vfs_handle_struct *handle,
files_struct *fsp,
struct lock_struct *plock)
.connectpath_fn = vfswrap_connectpath,
.brl_lock_windows_fn = vfswrap_brl_lock_windows,
.brl_unlock_windows_fn = vfswrap_brl_unlock_windows,
- .brl_cancel_windows_fn = vfswrap_brl_cancel_windows,
.strict_lock_check_fn = vfswrap_strict_lock_check,
.translate_name_fn = vfswrap_translate_name,
.fsctl_fn = vfswrap_fsctl,
SMB_VFS_OP_CONNECTPATH,
SMB_VFS_OP_BRL_LOCK_WINDOWS,
SMB_VFS_OP_BRL_UNLOCK_WINDOWS,
- SMB_VFS_OP_BRL_CANCEL_WINDOWS,
SMB_VFS_OP_STRICT_LOCK_CHECK,
SMB_VFS_OP_TRANSLATE_NAME,
SMB_VFS_OP_FSCTL,
{ SMB_VFS_OP_CONNECTPATH, "connectpath" },
{ SMB_VFS_OP_BRL_LOCK_WINDOWS, "brl_lock_windows" },
{ SMB_VFS_OP_BRL_UNLOCK_WINDOWS, "brl_unlock_windows" },
- { SMB_VFS_OP_BRL_CANCEL_WINDOWS, "brl_cancel_windows" },
{ SMB_VFS_OP_STRICT_LOCK_CHECK, "strict_lock_check" },
{ SMB_VFS_OP_TRANSLATE_NAME, "translate_name" },
{ SMB_VFS_OP_FSCTL, "fsctl" },
return result;
}
-static bool smb_full_audit_brl_cancel_windows(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock)
-{
- bool result;
-
- result = SMB_VFS_NEXT_BRL_CANCEL_WINDOWS(handle, br_lck, plock);
-
- do_log(SMB_VFS_OP_BRL_CANCEL_WINDOWS, (result == 0), handle,
- "%s:%llu-%llu:%d", fsp_str_do_log(brl_fsp(br_lck)),
- (unsigned long long)plock->start,
- (unsigned long long)plock->size,
- plock->lock_type);
-
- return result;
-}
-
static bool smb_full_audit_strict_lock_check(struct vfs_handle_struct *handle,
struct files_struct *fsp,
struct lock_struct *plock)
.connectpath_fn = smb_full_audit_connectpath,
.brl_lock_windows_fn = smb_full_audit_brl_lock_windows,
.brl_unlock_windows_fn = smb_full_audit_brl_unlock_windows,
- .brl_cancel_windows_fn = smb_full_audit_brl_cancel_windows,
.strict_lock_check_fn = smb_full_audit_strict_lock_check,
.translate_name_fn = smb_full_audit_translate_name,
.fsctl_fn = smb_full_audit_fsctl,
.brl_lock_windows_fn = NULL,
.brl_unlock_windows_fn = NULL,
- .brl_cancel_windows_fn = NULL,
.strict_lock_check_fn = NULL,
.translate_name_fn = NULL,
.fsctl_fn = NULL,
return false;
}
-bool vfs_not_implemented_brl_cancel_windows(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock)
-{
- errno = ENOSYS;
- return false;
-}
-
bool vfs_not_implemented_strict_lock_check(struct vfs_handle_struct *handle,
struct files_struct *fsp,
struct lock_struct *plock)
.connectpath_fn = vfs_not_implemented_connectpath,
.brl_lock_windows_fn = vfs_not_implemented_brl_lock_windows,
.brl_unlock_windows_fn = vfs_not_implemented_brl_unlock_windows,
- .brl_cancel_windows_fn = vfs_not_implemented_brl_cancel_windows,
.strict_lock_check_fn = vfs_not_implemented_strict_lock_check,
.translate_name_fn = vfs_not_implemented_translate_name,
.fsctl_fn = vfs_not_implemented_fsctl,
return result;
}
-static bool smb_time_audit_brl_cancel_windows(struct vfs_handle_struct *handle,
- struct byte_range_lock *br_lck,
- struct lock_struct *plock)
-{
- bool result;
- struct timespec ts1,ts2;
- double timediff;
-
- clock_gettime_mono(&ts1);
- result = SMB_VFS_NEXT_BRL_CANCEL_WINDOWS(handle, br_lck, plock);
- clock_gettime_mono(&ts2);
- timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9;
-
- if (timediff > audit_timeout) {
- smb_time_audit_log_fsp("brl_cancel_windows", timediff,
- brl_fsp(br_lck));
- }
-
- return result;
-}
-
static bool smb_time_audit_strict_lock_check(struct vfs_handle_struct *handle,
struct files_struct *fsp,
struct lock_struct *plock)
.connectpath_fn = smb_time_audit_connectpath,
.brl_lock_windows_fn = smb_time_audit_brl_lock_windows,
.brl_unlock_windows_fn = smb_time_audit_brl_unlock_windows,
- .brl_cancel_windows_fn = smb_time_audit_brl_cancel_windows,
.strict_lock_check_fn = smb_time_audit_strict_lock_check,
.translate_name_fn = smb_time_audit_translate_name,
.fsctl_fn = smb_time_audit_fsctl,