diff options
author | Steven Danneman <steven.danneman@isilon.com> | 2009-02-02 21:37:51 -0800 |
---|---|---|
committer | Steven Danneman <steven.danneman@isilon.com> | 2009-02-09 23:56:17 -0800 |
commit | 6272f4c2f453c509b8a3893d4c2ac5fc356b348d (patch) | |
tree | 82dce05824a6106a371febc4ec9ca6b2864cbcde /source3/modules | |
parent | 25d345eb39c69b2b42a966846ae893b068de40a4 (diff) | |
download | samba-6272f4c2f453c509b8a3893d4c2ac5fc356b348d.tar.gz samba-6272f4c2f453c509b8a3893d4c2ac5fc356b348d.tar.bz2 samba-6272f4c2f453c509b8a3893d4c2ac5fc356b348d.zip |
s3: Added SMB_VFS_INIT_SEARCH_OP to initialize data at the beginning of SMB search requests.
By default this VFS call is a NOOP, but the onefs vfs module takes advantage
of it to initialize direntry search caches at the beginning of each
TRANS2_FIND_FIRST, TRANS2_FIND_NEXT, SMBffirst, SMBsearch, and SMBunique
Diffstat (limited to 'source3/modules')
-rw-r--r-- | source3/modules/vfs_default.c | 9 | ||||
-rw-r--r-- | source3/modules/vfs_full_audit.c | 14 |
2 files changed, 23 insertions, 0 deletions
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 7d61191a69..cb56690dbb 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -206,6 +206,13 @@ static int vfswrap_closedir(vfs_handle_struct *handle, SMB_STRUCT_DIR *dirp) return result; } +static void vfswrap_init_search_op(vfs_handle_struct *handle, + SMB_STRUCT_DIR *dirp) +{ + /* Default behavior is a NOOP */ + return; +} + /* File operations */ static int vfswrap_open(vfs_handle_struct *handle, const char *fname, @@ -1449,6 +1456,8 @@ static vfs_op_tuple vfs_default_ops[] = { SMB_VFS_LAYER_OPAQUE}, {SMB_VFS_OP(vfswrap_closedir), SMB_VFS_OP_CLOSEDIR, SMB_VFS_LAYER_OPAQUE}, + {SMB_VFS_OP(vfswrap_init_search_op), SMB_VFS_OP_INIT_SEARCH_OP, + SMB_VFS_LAYER_OPAQUE}, /* File operations */ diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c index e279772494..e7ca77f6fa 100644 --- a/source3/modules/vfs_full_audit.c +++ b/source3/modules/vfs_full_audit.c @@ -108,6 +108,8 @@ static int smb_full_audit_rmdir(vfs_handle_struct *handle, const char *path); static int smb_full_audit_closedir(vfs_handle_struct *handle, SMB_STRUCT_DIR *dirp); +static void smb_full_audit_init_search_op(vfs_handle_struct *handle, + SMB_STRUCT_DIR *dirp); static int smb_full_audit_open(vfs_handle_struct *handle, const char *fname, files_struct *fsp, int flags, mode_t mode); static NTSTATUS smb_full_audit_create_file(vfs_handle_struct *handle, @@ -373,6 +375,8 @@ static vfs_op_tuple audit_op_tuples[] = { SMB_VFS_LAYER_LOGGER}, {SMB_VFS_OP(smb_full_audit_closedir), SMB_VFS_OP_CLOSEDIR, SMB_VFS_LAYER_LOGGER}, + {SMB_VFS_OP(smb_full_audit_init_search_op), SMB_VFS_OP_INIT_SEARCH_OP, + SMB_VFS_LAYER_LOGGER}, /* File operations */ @@ -587,6 +591,7 @@ static struct { { SMB_VFS_OP_MKDIR, "mkdir" }, { SMB_VFS_OP_RMDIR, "rmdir" }, { SMB_VFS_OP_CLOSEDIR, "closedir" }, + { SMB_VFS_OP_INIT_SEARCH_OP, "init_search_op" }, { SMB_VFS_OP_OPEN, "open" }, { SMB_VFS_OP_CREATE_FILE, "create_file" }, { SMB_VFS_OP_CLOSE, "close" }, @@ -1110,6 +1115,15 @@ static int smb_full_audit_closedir(vfs_handle_struct *handle, return result; } +static void smb_full_audit_init_search_op(vfs_handle_struct *handle, + SMB_STRUCT_DIR *dirp) +{ + SMB_VFS_NEXT_INIT_SEARCH_OP(handle, dirp); + + do_log(SMB_VFS_OP_INIT_SEARCH_OP, True, handle, ""); + return; +} + static int smb_full_audit_open(vfs_handle_struct *handle, const char *fname, files_struct *fsp, int flags, mode_t mode) { |