From a674a56a97c78a44bf43f1c175d106fbe70c7485 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 8 Feb 2011 15:07:48 -0800 Subject: Add fdopendir to the VFS. We will use this to reuse a directory fd already open by NtCreateX. Autobuild-User: Jeremy Allison Autobuild-Date: Wed Feb 9 00:55:22 CET 2011 on sn-devel-104 --- source3/include/smbprofile.h | 4 ++++ source3/include/vfs.h | 6 ++++++ source3/include/vfs_macros.h | 5 +++++ 3 files changed, 15 insertions(+) (limited to 'source3/include') diff --git a/source3/include/smbprofile.h b/source3/include/smbprofile.h index ff8ab90ce1..3041f6c87e 100644 --- a/source3/include/smbprofile.h +++ b/source3/include/smbprofile.h @@ -43,6 +43,10 @@ enum profile_stats_values #define syscall_opendir_count __profile_stats_value(PR_VALUE_SYSCALL_OPENDIR, count) #define syscall_opendir_time __profile_stats_value(PR_VALUE_SYSCALL_OPENDIR, time) + PR_VALUE_SYSCALL_FDOPENDIR, +#define syscall_fdopendir_count __profile_stats_value(PR_VALUE_SYSCALL_FDOPENDIR, count) +#define syscall_fdopendir_time __profile_stats_value(PR_VALUE_SYSCALL_FDOPENDIR, time) + PR_VALUE_SYSCALL_READDIR, #define syscall_readdir_count __profile_stats_value(PR_VALUE_SYSCALL_READDIR, count) #define syscall_readdir_time __profile_stats_value(PR_VALUE_SYSCALL_READDIR, time) diff --git a/source3/include/vfs.h b/source3/include/vfs.h index 72d61e330f..45193d2b54 100644 --- a/source3/include/vfs.h +++ b/source3/include/vfs.h @@ -132,6 +132,7 @@ where it belongs. JRA. */ /* Leave at 28 - not yet released. Rename posix_fallocate to fallocate to split out the two possible uses. JRA. */ +/* Leave at 28 - not yet released. Add fdopendir. JRA. */ #define SMB_VFS_INTERFACE_VERSION 28 @@ -198,6 +199,7 @@ struct vfs_fn_pointers { /* Directory operations */ SMB_STRUCT_DIR *(*opendir)(struct vfs_handle_struct *handle, const char *fname, const char *mask, uint32 attributes); + SMB_STRUCT_DIR *(*fdopendir)(struct vfs_handle_struct *handle, files_struct *fsp, const char *mask, uint32 attributes); SMB_STRUCT_DIRENT *(*readdir)(struct vfs_handle_struct *handle, SMB_STRUCT_DIR *dirp, SMB_STRUCT_STAT *sbuf); @@ -526,6 +528,10 @@ uint32_t smb_vfs_call_fs_capabilities(struct vfs_handle_struct *handle, SMB_STRUCT_DIR *smb_vfs_call_opendir(struct vfs_handle_struct *handle, const char *fname, const char *mask, uint32 attributes); +SMB_STRUCT_DIR *smb_vfs_call_fdopendir(struct vfs_handle_struct *handle, + struct files_struct *fsp, + const char *mask, + uint32 attributes); SMB_STRUCT_DIRENT *smb_vfs_call_readdir(struct vfs_handle_struct *handle, SMB_STRUCT_DIR *dirp, SMB_STRUCT_STAT *sbuf); diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h index bb6428ead5..c0fbe3860d 100644 --- a/source3/include/vfs_macros.h +++ b/source3/include/vfs_macros.h @@ -74,6 +74,11 @@ #define SMB_VFS_NEXT_OPENDIR(handle, fname, mask, attr) \ smb_vfs_call_opendir((handle)->next, (fname), (mask), (attr)) +#define SMB_VFS_FDOPENDIR(conn, fsp, mask, attr) \ + smb_vfs_call_fdopendir((conn)->vfs_handles, (fsp), (mask), (attr)) +#define SMB_VFS_NEXT_FDOPENDIR(handle, fsp, mask, attr) \ + smb_vfs_call_fdopendir((handle)->next, (fsp), (mask), (attr)) + #define SMB_VFS_READDIR(conn, dirp, sbuf) \ smb_vfs_call_readdir((conn)->vfs_handles, (dirp), (sbuf)) #define SMB_VFS_NEXT_READDIR(handle, dirp, sbuf) \ -- cgit