summaryrefslogtreecommitdiff
path: root/source3/include
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-02-08 15:07:48 -0800
committerJeremy Allison <jra@samba.org>2011-02-09 00:55:22 +0100
commita674a56a97c78a44bf43f1c175d106fbe70c7485 (patch)
tree78d6bab766e79d4e66de86d94d972cc96bb2a245 /source3/include
parent224fc03cb56b0d76f6ad7f18dd0528d6b0e57fb1 (diff)
downloadsamba-a674a56a97c78a44bf43f1c175d106fbe70c7485.tar.gz
samba-a674a56a97c78a44bf43f1c175d106fbe70c7485.tar.bz2
samba-a674a56a97c78a44bf43f1c175d106fbe70c7485.zip
Add fdopendir to the VFS. We will use this to reuse a directory fd already open by NtCreateX.
Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Wed Feb 9 00:55:22 CET 2011 on sn-devel-104
Diffstat (limited to 'source3/include')
-rw-r--r--source3/include/smbprofile.h4
-rw-r--r--source3/include/vfs.h6
-rw-r--r--source3/include/vfs_macros.h5
3 files changed, 15 insertions, 0 deletions
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) \