struct vfs_fsp_data {
struct vfs_fsp_data *next;
struct vfs_handle_struct *owner;
- /* NOTE: This structure contains two pointers so that we can guarantee
+ void (*destroy)(void *p_data);
+ void *_dummy_;
+ /* NOTE: This structure contains four pointers so that we can guarantee
* that the end of the structure is always both 4-byte and 8-byte aligned.
*/
};
NT_USER_TOKEN *nt_user_token;
};
+
struct smb_request {
uint8_t cmd;
uint16 flags2;
size_t unread_bytes;
bool encrypted;
connection_struct *conn;
+ struct smb_perfcount_data pcd;
/*
* Chained request handling
struct pending_message_list *next, *prev;
struct timeval request_time; /* When was this first issued? */
struct timed_event *te;
+ struct smb_perfcount_data pcd;
bool encrypted;
DATA_BLOB buf;
DATA_BLOB private_data;
16 uint32 private_options 4
20 uint32 time sec 4
24 uint32 time usec 4
-28 SMB_DEV_T dev 8 bytes.
-36 SMB_INO_T inode 8 bytes
-44 unsigned long file_id 4 bytes
-48 uint32 uid 4 bytes
-52 uint16 flags 2 bytes
-54
+28 uint64 dev 8 bytes
+36 uint64 inode 8 bytes
+44 uint64 extid 8 bytes
+52 unsigned long file_id 4 bytes
+56 uint32 uid 4 bytes
+60 uint16 flags 2 bytes
+62
*/
#ifdef CLUSTER_SUPPORT
-#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 58
+#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 66
#else
-#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 54
+#define MSG_SMB_SHARE_MODE_ENTRY_SIZE 62
#endif
struct share_mode_lock {
/* kernel_oplock_message definition.
struct kernel_oplock_message {
- SMB_DEV_T dev;
- SMB_INO_T inode;
+ uint64_t dev;
+ uint64_t inode;
+ unit64_t extid;
unsigned long file_id;
};
Offset Data length.
-0 SMB_DEV_T dev 8 bytes.
-8 SMB_INO_T inode 8 bytes
-16 unsigned long file_id 4 bytes
-20
+0 uint64_t dev 8 bytes
+8 uint64_t inode 8 bytes
+16 uint64_t extid 8 bytes
+24 unsigned long file_id 4 bytes
+28
*/
-#define MSG_SMB_KERNEL_BREAK_SIZE 20
+#define MSG_SMB_KERNEL_BREAK_SIZE 28
/* file_renamed_message definition.
struct file_renamed_message {
- SMB_DEV_T dev;
- SMB_INO_T inode;
+ uint64_t dev;
+ uint64_t inode;
char names[1]; A variable area containing sharepath and filename.
};
Offset Data length.
-0 SMB_DEV_T dev 8 bytes.
-8 SMB_INO_T inode 8 bytes
-16 char [] name zero terminated namelen bytes
-minimum length == 18.
+0 uint64_t dev 8 bytes
+8 uint64_t inode 8 bytes
+16 unit64_t extid 8 bytes
+24 char [] name zero terminated namelen bytes
+minimum length == 24.
*/
-#define MSG_FILE_RENAMED_MIN_SIZE 16
+#define MSG_FILE_RENAMED_MIN_SIZE 24
/*
* On the wire return values for oplock types.
LEASE_CAPABILITY
};
+/*
+ * Kernel oplocks capability flags.
+ */
+
+/* Level 2 oplocks are supported natively by kernel oplocks. */
+#define KOPLOCKS_LEVEL2_SUPPORTED 0x1
+
+/* The kernel notifies deferred openers when they can retry the open. */
+#define KOPLOCKS_DEFERRED_OPEN_NOTIFICATION 0x2
+
+/* The kernel notifies smbds when an oplock break times out. */
+#define KOPLOCKS_TIMEOUT_NOTIFICATION 0x4
+
+/* The kernel notifies smbds when an oplock is broken. */
+#define KOPLOCKS_OPLOCK_BROKEN_NOTIFICATION 0x8
+
struct kernel_oplocks_ops;
struct kernel_oplocks {
const struct kernel_oplocks_ops *ops;
+ uint32_t flags;
void *private_data;
};
+enum level2_contention_type {
+ LEVEL2_CONTEND_ALLOC_SHRINK,
+ LEVEL2_CONTEND_ALLOC_GROW,
+ LEVEL2_CONTEND_SET_FILE_LEN,
+ LEVEL2_CONTEND_FILL_SPARSE,
+ LEVEL2_CONTEND_WRITE,
+ LEVEL2_CONTEND_WINDOWS_BRL,
+ LEVEL2_CONTEND_POSIX_BRL
+};
+
/* if a kernel does support oplocks then a structure of the following
typee is used to describe how to interact with the kernel */
struct kernel_oplocks_ops {
bool (*set_oplock)(struct kernel_oplocks *ctx,
files_struct *fsp, int oplock_type);
void (*release_oplock)(struct kernel_oplocks *ctx,
- files_struct *fsp);
+ files_struct *fsp, int oplock_type);
+ void (*contend_level2_oplocks_begin)(files_struct *fsp,
+ enum level2_contention_type type);
+ void (*contend_level2_oplocks_end)(files_struct *fsp,
+ enum level2_contention_type type);
};
#include "smb_macros.h"