[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Wed Jul 25 18:45:02 UTC 2018


The branch, master has been updated
       via  5ab0b4a examples/VFS/skel_transparent: make vfs_fn_pointers static
       via  f37f8cc examples/VFS/skel_opaque: make vfs_fn_pointers static
       via  53d7822 examples/VFS/skel_opaque: fix a likely a copy/paste error
       via  bd79564 s3:modules: add vfs_not_implemented module
       via  cd37bad vfs_aio_pthread: use event context and threadpool from user_vfs_evg
       via  2dd95c1 s3: vfs: add user_vfs_evg to connection_struct
       via  1251a53 s3: vfs: add smb_vfs_ev_glue
       via  0c97226 smbd: introduce sconn->sync_thread_pool
       via  2be7518 smbd: rename sconn->pool to sconn->raw_thread_pool
       via  0e900d6 smbd: add missing DO_PROFILE_INC(disconnect) to smbd_server_connection_terminate_ex()
       via  8d4792e smbd: disconnect/destroy all connections before calling smbXsrv_session_logoff_all()
       via  9848727 smbd: only pass struct smbXsrv_client to smbXsrv_session_logoff_all()
       via  5cb94ca smbd: only pass struct smbXsrv_client to smb1srv_tcon_disconnect_all()
       via  3fd1a41 pthreadpool: add a missing include
      from  a5e02f7 lib audit_logging: add _WARN_UNUSED_RESULT_

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 5ab0b4af9edbd50c0c7747840f9b3aca9cb01da8
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jul 25 12:30:37 2018 +0200

    examples/VFS/skel_transparent: make vfs_fn_pointers static
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(master): Wed Jul 25 20:44:12 CEST 2018 on sn-devel-144

commit f37f8cca3ba70db326caabc27397719bca6fcc68
Author: Ralph Boehme <slow at samba.org>
Date:   Wed Jul 25 15:47:37 2018 +0200

    examples/VFS/skel_opaque: make vfs_fn_pointers static
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 53d78225ffd81e24fe00a013f7497851965c8171
Author: Ralph Boehme <slow at samba.org>
Date:   Wed Jul 25 15:45:44 2018 +0200

    examples/VFS/skel_opaque: fix a likely a copy/paste error
    
    This line was probably copied over from skel_transparent.c, remove it.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit bd79564af10052e5b7bf4c446118b6eeb1b1e589
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jul 25 12:26:05 2018 +0200

    s3:modules: add vfs_not_implemented module
    
    This provides helper functions, which can be used by other modules,
    if they don't implement a specific function.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit cd37badc02b3e56f974168b28447444cd54ee541
Author: Ralph Boehme <slow at samba.org>
Date:   Fri Jul 13 16:48:19 2018 +0200

    vfs_aio_pthread: use event context and threadpool from user_vfs_evg
    
    Or the root glue in case we're already root.
    
    Pair-Programmed-With: Stefan Metzmacher <metze at samba.org>
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Signed-off-by: Ralph Boehme <slow at samba.org>

commit 2dd95c1c38b9e1ce32d3d1081b6ec177910087a4
Author: Ralph Boehme <slow at samba.org>
Date:   Thu Jul 5 13:09:53 2018 +0200

    s3: vfs: add user_vfs_evg to connection_struct
    
    This will be used to in order to pass down the
    impersonation magic from the SMB layer through
    the SMB_VFS layer.
    
    This includes the following options:
    
    smbd:force sync user path safe threadpool
    smbd:force sync user chdir safe threadpool
    smbd:force sync root path safe threadpool
    smbd:force sync root chdir safe threadpool
    
    They can be used in order to test the non linux code
    path on linux, once we get code that makes full use
    of the new infrastructure.
    
    Pair-Programmed-With: Stefan Metzmacher <metze at samba.org>
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Signed-off-by: Ralph Boehme <slow at samba.org>

commit 1251a536df4b1df58d9ddacab03d3ebe6f4e5b60
Author: Ralph Boehme <slow at samba.org>
Date:   Sun Jul 8 16:28:02 2018 +0200

    s3: vfs: add smb_vfs_ev_glue
    
    This adds VFS helper functions and that work on a struct smb_vfs_ev_glue
    object which bundles two event contexts and a few threadpools.
    
    This will be used to streamline the use of impersonating wrappers
    in the SMB_VFS.
    
    Notice the verbose comments in source3/smbd/vfs.c.
    
    This will allow us to introduce path based async operations
    to the SMB_VFS layer.
    
    Pair-Programmed-With: Stefan Metzmacher <metze at samba.org>
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Signed-off-by: Ralph Boehme <slow at samba.org>

commit 0c97226356f2ba5f01a58d361371055caf11e2a7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 24 10:56:34 2018 +0200

    smbd: introduce sconn->sync_thread_pool
    
    This just simulates a threadpool, but executes the
    job functions inline (blocking) in the main thread.
    
    This will be used to work arround some OS limitations,
    e.g. if per thread credentials or per thread working directory
    are not supported.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 2be7518ae5a3c046f5fca04ecc83f9f7044eac74
Author: Ralph Boehme <slow at samba.org>
Date:   Fri Jul 13 17:17:50 2018 +0200

    smbd: rename sconn->pool to sconn->raw_thread_pool
    
    This should in future not be used directly, we'll provide
    wrapper pools, which will provide impersonation for
    path based async calls.
    
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 0e900d60822d2050fa52b8c4dddf67c0d134f662
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jul 25 16:44:18 2018 +0200

    smbd: add missing DO_PROFILE_INC(disconnect) to smbd_server_connection_terminate_ex()
    
    For multi channel connections we should increment the disconnect count
    also if we're not closing the last channel.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 8d4792e68604c2ea96bb179774e4745d49d8bade
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 24 17:17:29 2018 +0200

    smbd: disconnect/destroy all connections before calling smbXsrv_session_logoff_all()
    
    This means the pending requests are destroyed before tevent_context
    impersonation wrapper are destroyed.
    
    Otherwise, with a pending struct tevent_req that is a child of
    client->xconn like this in exit_server_common():
    
    conn[ipv4:127.0.0.11:40745] reason[NT_STATUS_CONNECTION_RESET] at ../source3/smbd/smb2_server.c:4015
    full talloc report on 'struct smbXsrv_connection' (total   6085 bytes in  43 blocks)
        struct smbd_smb2_request       contains    648 bytes in   1 blocks (ref 0) 0x55ed41634740
        struct smbd_smb2_request       contains   3438 bytes in  32 blocks (ref 0) 0x55ed416331e0
            struct tevent_req              contains   1824 bytes in  20 blocks (ref 0) 0x55ed41635860
                struct smb_filename            contains    206 bytes in   2 blocks (ref 0) 0x55ed41635560
                    lease_v2_complex2.dat          contains     22 bytes in   1 blocks (ref 0) 0x55ed4161b950
                struct smbd_smb2_create_state  contains   1386 bytes in  16 blocks (ref 0) 0x55ed41635a10
                    struct deferred_open_record    contains    804 bytes in  12 blocks (ref 0) 0x55ed41633090
                        struct defer_open_state        contains    764 bytes in  11 blocks (ref 0) 0x55ed41634f10
                            struct tevent_req              contains    748 bytes in  10 blocks (ref 0) 0x55ed41636390
                                struct tevent_timer            contains     96 bytes in   1 blocks (ref 0) 0x55ed41636ad0
                                struct dbwrap_watched_watch_state contains    420 bytes in   7 blocks (ref 0) 0x55ed41636540
                                    struct tevent_req              contains    296 bytes in   5 blocks (ref 0) 0x55ed41636700
                                        struct messaging_filtered_read_state contains     64 bytes in   3 blocks (ref 0) 0x55ed416368b0
                                            struct messaging_dgm_fde       contains      8 bytes in   2 blocks (ref 0) 0x55ed41636950
                                                reference to: struct messaging_dgm_fde_ev
    
    we crash when freeing the xconn as the the tevent_req child has a
    cleanup function that tries to access a (wrapped) tevent context that
    was already destroyed via smb1srv_tcon_disconnect_all() for SMB1 or
    smbXsrv_session_logoff_all() for SMB2 a few lines above.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 984872731a235cf4c37c18b09a4e70795a76da93
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 24 17:13:39 2018 +0200

    smbd: only pass struct smbXsrv_client to smbXsrv_session_logoff_all()
    
    That's all it needs.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 5cb94ca028c3fccd9a778123834bb2681aa73136
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jul 24 17:13:39 2018 +0200

    smbd: only pass struct smbXsrv_client to smb1srv_tcon_disconnect_all()
    
    That's all it needs.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 3fd1a41f6867f0b9b62d0eeee82fcbbfcf38c003
Author: Ralph Boehme <slow at samba.org>
Date:   Wed Jul 25 12:03:52 2018 +0200

    pthreadpool: add a missing include
    
    Reported-by: David Disseldorp <ddiss at samba.org>
    Signed-off-by: Ralph Boehme <slow at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 examples/VFS/skel_opaque.c            |    3 +-
 examples/VFS/skel_transparent.c       |    2 +-
 lib/pthreadpool/pthreadpool.c         |    1 +
 lib/pthreadpool/pthreadpool_tevent.c  |    1 +
 source3/include/vfs.h                 |  399 +++++++++++-
 source3/modules/vfs_aio_pthread.c     |   40 +-
 source3/modules/vfs_default.c         |    7 +-
 source3/modules/vfs_not_implemented.c | 1071 +++++++++++++++++++++++++++++++++
 source3/modules/vfs_readonly.c        |    2 +-
 source3/modules/wscript_build         |   16 +
 source3/smbd/conn.c                   |    8 +-
 source3/smbd/globals.h                |    7 +-
 source3/smbd/msdfs.c                  |   80 ++-
 source3/smbd/process.c                |   18 +-
 source3/smbd/proto.h                  |   13 +
 source3/smbd/server_exit.c            |   31 +-
 source3/smbd/smb2_server.c            |    1 +
 source3/smbd/smbXsrv_session.c        |    4 +-
 source3/smbd/smbXsrv_tcon.c           |    3 +-
 source3/smbd/uid.c                    |  754 ++++++++++++++++++++++-
 source3/smbd/vfs.c                    |  874 +++++++++++++++++++++++++++
 source3/wscript                       |    4 +-
 22 files changed, 3255 insertions(+), 84 deletions(-)
 create mode 100644 source3/modules/vfs_not_implemented.c


Changeset truncated at 500 lines:

diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index 5b9d1f4..6fc4d58 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -856,7 +856,6 @@ static int skel_fremovexattr(vfs_handle_struct *handle,
 {
 	errno = ENOSYS;
 	return -1;
-	return SMB_VFS_NEXT_FREMOVEXATTR(handle, fsp, name);
 }
 
 static int skel_setxattr(vfs_handle_struct *handle,
@@ -924,7 +923,7 @@ static NTSTATUS skel_durable_reconnect(struct vfs_handle_struct *handle,
 
 /* VFS operations structure */
 
-struct vfs_fn_pointers skel_opaque_fns = {
+static struct vfs_fn_pointers skel_opaque_fns = {
 	/* Disk operations */
 
 	.connect_fn = skel_connect,
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index 513294f..d84e6de 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -1119,7 +1119,7 @@ static NTSTATUS skel_durable_reconnect(struct vfs_handle_struct *handle,
 
 /* VFS operations structure */
 
-struct vfs_fn_pointers skel_transparent_fns = {
+static struct vfs_fn_pointers skel_transparent_fns = {
 	/* Disk operations */
 
 	.connect_fn = skel_connect,
diff --git a/lib/pthreadpool/pthreadpool.c b/lib/pthreadpool/pthreadpool.c
index db3837c..d482c15 100644
--- a/lib/pthreadpool/pthreadpool.c
+++ b/lib/pthreadpool/pthreadpool.c
@@ -21,6 +21,7 @@
 #include "system/time.h"
 #include "system/wait.h"
 #include "system/threads.h"
+#include "system/filesys.h"
 #include "pthreadpool.h"
 #include "lib/util/dlinklist.h"
 #include "lib/util/blocking.h"
diff --git a/lib/pthreadpool/pthreadpool_tevent.c b/lib/pthreadpool/pthreadpool_tevent.c
index 19b1e6d..f88f82d 100644
--- a/lib/pthreadpool/pthreadpool_tevent.c
+++ b/lib/pthreadpool/pthreadpool_tevent.c
@@ -20,6 +20,7 @@
 #include "replace.h"
 #include "system/select.h"
 #include "system/threads.h"
+#include "system/filesys.h"
 #include "pthreadpool_tevent.h"
 #include "pthreadpool.h"
 #include "lib/util/tevent_unix.h"
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index 90d39ac..3d3718d 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -257,6 +257,8 @@
 /* Version 39 - Remove struct dfree_cached_info pointer from
 		connection struct */
 /* Bump to version 40, Samba 4.10 will ship with that */
+/* Version 40 - Introduce smb_vfs_ev_glue infrastructure. */
+/* Version 40 - Add vfs_not_implemented_* helper functions. */
 
 #define SMB_VFS_INTERFACE_VERSION 40
 
@@ -279,6 +281,9 @@ struct smb_file_time;
 struct blocking_lock_record;
 struct smb_filename;
 struct dfs_GetDFSReferral;
+struct tevent_context;
+struct pthreadpool_tevent;
+struct smb_vfs_ev_glue;
 
 typedef union unid_t {
 	uid_t uid;
@@ -400,7 +405,7 @@ typedef struct files_struct {
 
 struct vuid_cache_entry {
 	struct auth_session_info *session_info;
-	struct tevent_context *user_ev_ctx;
+	struct smb_vfs_ev_glue *user_vfs_evg;
 	uint64_t vuid; /* SMB2 compat */
 	bool read_only;
 	uint32_t share_access;
@@ -449,6 +454,7 @@ typedef struct connection_struct {
 	 */
 	struct auth_session_info *session_info;
 	struct tevent_context *user_ev_ctx;
+	struct smb_vfs_ev_glue *user_vfs_evg;
 
 	/*
 	 * If the "force group" parameter is set, this is the primary gid that
@@ -1500,4 +1506,395 @@ void *vfs_fetch_fsp_extension(vfs_handle_struct *handle, files_struct *fsp);
 void smb_vfs_assert_all_fns(const struct vfs_fn_pointers* fns,
 			    const char *module);
 
+/*
+ * Notice the "Design of the smb_vfs_ev_glue infrastructure"
+ * comment in source3/smbd/vfs.c!
+ *
+ * This explains smb_vfs_ev_glue infrastructure in detail.
+ */
+struct tevent_context *smb_vfs_ev_glue_ev_ctx(const struct smb_vfs_ev_glue *evg);
+struct pthreadpool_tevent *smb_vfs_ev_glue_tp_fd_safe(const struct smb_vfs_ev_glue *evg);
+struct pthreadpool_tevent *smb_vfs_ev_glue_tp_path_safe(const struct smb_vfs_ev_glue *evg);
+struct pthreadpool_tevent *smb_vfs_ev_glue_tp_chdir_safe(const struct smb_vfs_ev_glue *evg);
+const struct smb_vfs_ev_glue *smb_vfs_ev_glue_get_root_glue(const struct smb_vfs_ev_glue *evg);
+struct smb_vfs_ev_glue *smb_vfs_ev_glue_create(TALLOC_CTX *mem_ctx,
+				struct tevent_context *user_ev,
+				struct pthreadpool_tevent *user_tp_fd_safe,
+				struct pthreadpool_tevent *user_tp_path_safe,
+				struct pthreadpool_tevent *user_tp_chdir_safe,
+				struct tevent_context *root_ev,
+				struct pthreadpool_tevent *root_tp_fd_safe,
+				struct pthreadpool_tevent *root_tp_path_safe,
+				struct pthreadpool_tevent *root_tp_chdir_safe);
+struct smb_vfs_ev_glue *smb_vfs_ev_glue_create_switch(
+			TALLOC_CTX *mem_ctx,
+			const struct smb_vfs_ev_glue *return_evg,
+			const struct smb_vfs_ev_glue *run_evg);
+
+/*
+ * Helper functions from source3/modules/vfs_not_implemented.c
+ */
+int vfs_not_implemented_connect(
+			vfs_handle_struct *handle,
+			const char *service,
+			const char *user);
+void vfs_not_implemented_disconnect(vfs_handle_struct *handle);
+uint64_t vfs_not_implemented_disk_free(vfs_handle_struct *handle,
+				const struct smb_filename *smb_fname,
+				uint64_t *bsize,
+				uint64_t *dfree,
+				uint64_t *dsize);
+int vfs_not_implemented_get_quota(vfs_handle_struct *handle,
+				const struct smb_filename *smb_fname,
+				enum SMB_QUOTA_TYPE qtype,
+				unid_t id,
+				SMB_DISK_QUOTA *dq);
+int vfs_not_implemented_set_quota(vfs_handle_struct *handle,
+				  enum SMB_QUOTA_TYPE qtype,
+				  unid_t id, SMB_DISK_QUOTA *dq);
+int vfs_not_implemented_get_shadow_copy_data(vfs_handle_struct *handle,
+				files_struct *fsp,
+				struct shadow_copy_data *shadow_copy_data,
+				bool labels);
+int vfs_not_implemented_statvfs(struct vfs_handle_struct *handle,
+				const struct smb_filename *smb_fname,
+				struct vfs_statvfs_struct *statbuf);
+uint32_t vfs_not_implemented_fs_capabilities(struct vfs_handle_struct *handle,
+				enum timestamp_set_resolution *p_ts_res);
+NTSTATUS vfs_not_implemented_get_dfs_referrals(struct vfs_handle_struct *handle,
+					       struct dfs_GetDFSReferral *r);
+DIR *vfs_not_implemented_opendir(vfs_handle_struct *handle,
+			const struct smb_filename *smb_fname,
+			const char *mask,
+			uint32_t attr);
+NTSTATUS vfs_not_implemented_snap_check_path(struct vfs_handle_struct *handle,
+				TALLOC_CTX *mem_ctx,
+				const char *service_path,
+				char **base_volume);
+NTSTATUS vfs_not_implemented_snap_create(struct vfs_handle_struct *handle,
+					 TALLOC_CTX *mem_ctx,
+					 const char *base_volume,
+					 time_t *tstamp,
+					 bool rw,
+					 char **base_path,
+					 char **snap_path);
+NTSTATUS vfs_not_implemented_snap_delete(struct vfs_handle_struct *handle,
+					 TALLOC_CTX *mem_ctx,
+					 char *base_path,
+					 char *snap_path);
+DIR *vfs_not_implemented_fdopendir(vfs_handle_struct *handle, files_struct *fsp,
+				   const char *mask, uint32_t attr);
+struct dirent *vfs_not_implemented_readdir(vfs_handle_struct *handle,
+					   DIR *dirp, SMB_STRUCT_STAT *sbuf);
+void vfs_not_implemented_seekdir(vfs_handle_struct *handle, DIR *dirp, long offset);
+long vfs_not_implemented_telldir(vfs_handle_struct *handle, DIR *dirp);
+void vfs_not_implemented_rewind_dir(vfs_handle_struct *handle, DIR *dirp);
+int vfs_not_implemented_mkdir(vfs_handle_struct *handle,
+		const struct smb_filename *smb_fname,
+		mode_t mode);
+int vfs_not_implemented_rmdir(vfs_handle_struct *handle,
+		const struct smb_filename *smb_fname);
+int vfs_not_implemented_closedir(vfs_handle_struct *handle, DIR *dir);
+int vfs_not_implemented_open(vfs_handle_struct *handle,
+			     struct smb_filename *smb_fname,
+			     files_struct *fsp, int flags, mode_t mode);
+NTSTATUS vfs_not_implemented_create_file(struct vfs_handle_struct *handle,
+				struct smb_request *req,
+				uint16_t root_dir_fid,
+				struct smb_filename *smb_fname,
+				uint32_t access_mask,
+				uint32_t share_access,
+				uint32_t create_disposition,
+				uint32_t create_options,
+				uint32_t file_attributes,
+				uint32_t oplock_request,
+				struct smb2_lease *lease,
+				uint64_t allocation_size,
+				uint32_t private_flags,
+				struct security_descriptor *sd,
+				struct ea_list *ea_list,
+				files_struct **result, int *pinfo,
+				const struct smb2_create_blobs *in_context_blobs,
+				struct smb2_create_blobs *out_context_blobs);
+int vfs_not_implemented_close_fn(vfs_handle_struct *handle, files_struct *fsp);
+ssize_t vfs_not_implemented_pread(vfs_handle_struct *handle, files_struct *fsp,
+				  void *data, size_t n, off_t offset);
+struct tevent_req *vfs_not_implemented_pread_send(struct vfs_handle_struct *handle,
+						  TALLOC_CTX *mem_ctx,
+						  struct tevent_context *ev,
+						  struct files_struct *fsp,
+						  void *data, size_t n, off_t offset);
+ssize_t vfs_not_implemented_pread_recv(struct tevent_req *req,
+				       struct vfs_aio_state *vfs_aio_state);
+ssize_t vfs_not_implemented_pwrite(vfs_handle_struct *handle, files_struct *fsp,
+				   const void *data, size_t n, off_t offset);
+struct tevent_req *vfs_not_implemented_pwrite_send(struct vfs_handle_struct *handle,
+						   TALLOC_CTX *mem_ctx,
+						   struct tevent_context *ev,
+						   struct files_struct *fsp,
+						   const void *data,
+						   size_t n, off_t offset);
+ssize_t vfs_not_implemented_pwrite_recv(struct tevent_req *req,
+				struct vfs_aio_state *vfs_aio_state);
+off_t vfs_not_implemented_lseek(vfs_handle_struct *handle, files_struct *fsp,
+			off_t offset, int whence);
+ssize_t vfs_not_implemented_sendfile(vfs_handle_struct *handle, int tofd,
+				     files_struct *fromfsp, const DATA_BLOB *hdr,
+				     off_t offset, size_t n);
+ssize_t vfs_not_implemented_recvfile(vfs_handle_struct *handle, int fromfd,
+				     files_struct *tofsp, off_t offset, size_t n);
+int vfs_not_implemented_rename(vfs_handle_struct *handle,
+			       const struct smb_filename *smb_fname_src,
+			       const struct smb_filename *smb_fname_dst);
+struct tevent_req *vfs_not_implemented_fsync_send(struct vfs_handle_struct *handle,
+						  TALLOC_CTX *mem_ctx,
+						  struct tevent_context *ev,
+						  struct files_struct *fsp);
+int vfs_not_implemented_fsync_recv(struct tevent_req *req,
+				   struct vfs_aio_state *vfs_aio_state);
+int vfs_not_implemented_stat(vfs_handle_struct *handle, struct smb_filename *smb_fname);
+int vfs_not_implemented_fstat(vfs_handle_struct *handle, files_struct *fsp,
+			SMB_STRUCT_STAT *sbuf);
+int vfs_not_implemented_lstat(vfs_handle_struct *handle,
+			      struct smb_filename *smb_fname);
+uint64_t vfs_not_implemented_get_alloc_size(struct vfs_handle_struct *handle,
+					    struct files_struct *fsp,
+					    const SMB_STRUCT_STAT *sbuf);
+int vfs_not_implemented_unlink(vfs_handle_struct *handle,
+			       const struct smb_filename *smb_fname);
+int vfs_not_implemented_chmod(vfs_handle_struct *handle,
+			      const struct smb_filename *smb_fname,
+			      mode_t mode);
+int vfs_not_implemented_fchmod(vfs_handle_struct *handle, files_struct *fsp,
+			       mode_t mode);
+int vfs_not_implemented_chown(vfs_handle_struct *handle,
+			      const struct smb_filename *smb_fname,
+			      uid_t uid,
+			      gid_t gid);
+int vfs_not_implemented_fchown(vfs_handle_struct *handle, files_struct *fsp,
+			       uid_t uid, gid_t gid);
+int vfs_not_implemented_lchown(vfs_handle_struct *handle,
+			       const struct smb_filename *smb_fname,
+			       uid_t uid,
+			       gid_t gid);
+int vfs_not_implemented_chdir(vfs_handle_struct *handle,
+			      const struct smb_filename *smb_fname);
+struct smb_filename *vfs_not_implemented_getwd(vfs_handle_struct *handle,
+					       TALLOC_CTX *ctx);
+int vfs_not_implemented_ntimes(vfs_handle_struct *handle,
+			       const struct smb_filename *smb_fname,
+			       struct smb_file_time *ft);
+int vfs_not_implemented_ftruncate(vfs_handle_struct *handle, files_struct *fsp,
+				  off_t offset);
+int vfs_not_implemented_fallocate(vfs_handle_struct *handle, files_struct *fsp,
+				  uint32_t mode, off_t offset, off_t len);
+bool vfs_not_implemented_lock(vfs_handle_struct *handle, files_struct *fsp, int op,
+			      off_t offset, off_t count, int type);
+int vfs_not_implemented_kernel_flock(struct vfs_handle_struct *handle,
+				     struct files_struct *fsp,
+				     uint32_t share_mode, uint32_t access_mask);
+int vfs_not_implemented_linux_setlease(struct vfs_handle_struct *handle,
+				       struct files_struct *fsp, int leasetype);
+bool vfs_not_implemented_getlock(vfs_handle_struct *handle, files_struct *fsp,
+				 off_t *poffset, off_t *pcount, int *ptype,
+				 pid_t *ppid);
+int vfs_not_implemented_symlink(vfs_handle_struct *handle,
+				const char *link_contents,
+				const struct smb_filename *new_smb_fname);
+int vfs_not_implemented_vfs_readlink(vfs_handle_struct *handle,
+				     const struct smb_filename *smb_fname,
+				     char *buf,
+				     size_t bufsiz);
+int vfs_not_implemented_link(vfs_handle_struct *handle,
+			     const struct smb_filename *old_smb_fname,
+			     const struct smb_filename *new_smb_fname);
+int vfs_not_implemented_mknod(vfs_handle_struct *handle,
+			      const struct smb_filename *smb_fname,
+			      mode_t mode,
+			      SMB_DEV_T dev);
+struct smb_filename *vfs_not_implemented_realpath(vfs_handle_struct *handle,
+						  TALLOC_CTX *ctx,
+						  const struct smb_filename *smb_fname);
+int vfs_not_implemented_chflags(vfs_handle_struct *handle,
+				const struct smb_filename *smb_fname,
+				uint flags);
+struct file_id vfs_not_implemented_file_id_create(vfs_handle_struct *handle,
+						  const SMB_STRUCT_STAT *sbuf);
+struct tevent_req *vfs_not_implemented_offload_read_send(
+			TALLOC_CTX *mem_ctx,
+			struct tevent_context *ev,
+			struct vfs_handle_struct *handle,
+			struct files_struct *fsp,
+			uint32_t fsctl,
+			uint32_t ttl,
+			off_t offset,
+			size_t to_copy);
+NTSTATUS vfs_not_implemented_offload_read_recv(struct tevent_req *req,
+				       struct vfs_handle_struct *handle,
+				       TALLOC_CTX *mem_ctx,
+				       DATA_BLOB *_token_blob);
+struct tevent_req *vfs_not_implemented_offload_write_send(
+			struct vfs_handle_struct *handle,
+			TALLOC_CTX *mem_ctx,
+			struct tevent_context *ev,
+			uint32_t fsctl,
+			DATA_BLOB *token,
+			off_t transfer_offset,
+			struct files_struct *dest_fsp,
+			off_t dest_off,
+			off_t num);
+NTSTATUS vfs_not_implemented_offload_write_recv(struct vfs_handle_struct *handle,
+						struct tevent_req *req,
+						off_t *copied);
+NTSTATUS vfs_not_implemented_get_compression(struct vfs_handle_struct *handle,
+					     TALLOC_CTX *mem_ctx,
+					     struct files_struct *fsp,
+					     struct smb_filename *smb_fname,
+					     uint16_t *_compression_fmt);
+NTSTATUS vfs_not_implemented_set_compression(struct vfs_handle_struct *handle,
+					     TALLOC_CTX *mem_ctx,
+					     struct files_struct *fsp,
+					     uint16_t compression_fmt);
+NTSTATUS vfs_not_implemented_streaminfo(struct vfs_handle_struct *handle,
+					struct files_struct *fsp,
+					const struct smb_filename *smb_fname,
+					TALLOC_CTX *mem_ctx,
+					unsigned int *num_streams,
+					struct stream_struct **streams);
+int vfs_not_implemented_get_real_filename(struct vfs_handle_struct *handle,
+					  const char *path,
+					  const char *name,
+					  TALLOC_CTX *mem_ctx,
+					  char **found_name);
+const char *vfs_not_implemented_connectpath(struct vfs_handle_struct *handle,
+					    const struct smb_filename *smb_fname);
+NTSTATUS vfs_not_implemented_brl_lock_windows(struct vfs_handle_struct *handle,
+					      struct byte_range_lock *br_lck,
+					      struct lock_struct *plock,
+					      bool blocking_lock);
+bool vfs_not_implemented_brl_unlock_windows(struct vfs_handle_struct *handle,
+					    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);
+NTSTATUS vfs_not_implemented_translate_name(struct vfs_handle_struct *handle,
+					    const char *mapped_name,
+					    enum vfs_translate_direction direction,
+					    TALLOC_CTX *mem_ctx, char **pmapped_name);
+NTSTATUS vfs_not_implemented_fsctl(struct vfs_handle_struct *handle,
+				   struct files_struct *fsp,
+				   TALLOC_CTX *ctx,
+				   uint32_t function,
+				   uint16_t req_flags,	/* Needed for UNICODE ... */
+				   const uint8_t *_in_data,
+				   uint32_t in_len,
+				   uint8_t **_out_data,
+				   uint32_t max_out_len, uint32_t *out_len);
+NTSTATUS vfs_not_implemented_readdir_attr(struct vfs_handle_struct *handle,
+					  const struct smb_filename *fname,
+					  TALLOC_CTX *mem_ctx,
+					  struct readdir_attr_data **pattr_data);
+NTSTATUS vfs_not_implemented_get_dos_attributes(struct vfs_handle_struct *handle,
+						struct smb_filename *smb_fname,
+						uint32_t *dosmode);
+NTSTATUS vfs_not_implemented_fget_dos_attributes(struct vfs_handle_struct *handle,
+						 struct files_struct *fsp,
+						 uint32_t *dosmode);
+NTSTATUS vfs_not_implemented_set_dos_attributes(struct vfs_handle_struct *handle,
+						const struct smb_filename *smb_fname,
+						uint32_t dosmode);
+NTSTATUS vfs_not_implemented_fset_dos_attributes(struct vfs_handle_struct *handle,
+						 struct files_struct *fsp,
+						 uint32_t dosmode);
+NTSTATUS vfs_not_implemented_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+					 uint32_t security_info,
+					 TALLOC_CTX *mem_ctx,
+					 struct security_descriptor **ppdesc);
+NTSTATUS vfs_not_implemented_get_nt_acl(vfs_handle_struct *handle,
+					const struct smb_filename *smb_fname,
+					uint32_t security_info,
+					TALLOC_CTX *mem_ctx,
+					struct security_descriptor **ppdesc);
+NTSTATUS vfs_not_implemented_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+					 uint32_t security_info_sent,
+					 const struct security_descriptor *psd);
+SMB_ACL_T vfs_not_implemented_sys_acl_get_file(vfs_handle_struct *handle,
+					       const struct smb_filename *smb_fname,
+					       SMB_ACL_TYPE_T type,
+					       TALLOC_CTX *mem_ctx);
+SMB_ACL_T vfs_not_implemented_sys_acl_get_fd(vfs_handle_struct *handle,
+					     files_struct *fsp, TALLOC_CTX *mem_ctx);
+int vfs_not_implemented_sys_acl_blob_get_file(vfs_handle_struct *handle,
+				const struct smb_filename *smb_fname,
+				TALLOC_CTX *mem_ctx,
+				char **blob_description,
+				DATA_BLOB *blob);
+int vfs_not_implemented_sys_acl_blob_get_fd(vfs_handle_struct *handle,
+				files_struct *fsp, TALLOC_CTX *mem_ctx,
+				char **blob_description, DATA_BLOB *blob);
+int vfs_not_implemented_sys_acl_set_file(vfs_handle_struct *handle,
+				const struct smb_filename *smb_fname,
+				SMB_ACL_TYPE_T acltype,
+				SMB_ACL_T theacl);
+int vfs_not_implemented_sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
+				       SMB_ACL_T theacl);
+int vfs_not_implemented_sys_acl_delete_def_file(vfs_handle_struct *handle,
+					const struct smb_filename *smb_fname);
+ssize_t vfs_not_implemented_getxattr(vfs_handle_struct *handle,
+				const struct smb_filename *smb_fname,
+				const char *name,
+				void *value,
+				size_t size);
+ssize_t vfs_not_implemented_fgetxattr(vfs_handle_struct *handle,
+			      struct files_struct *fsp, const char *name,
+			      void *value, size_t size);
+ssize_t vfs_not_implemented_listxattr(vfs_handle_struct *handle,
+				      const struct smb_filename *smb_fname,
+				      char *list,
+				      size_t size);
+ssize_t vfs_not_implemented_flistxattr(vfs_handle_struct *handle,
+				       struct files_struct *fsp, char *list,
+				       size_t size);
+int vfs_not_implemented_removexattr(vfs_handle_struct *handle,
+				    const struct smb_filename *smb_fname,
+				    const char *name);
+int vfs_not_implemented_fremovexattr(vfs_handle_struct *handle,
+				     struct files_struct *fsp, const char *name);
+int vfs_not_implemented_setxattr(vfs_handle_struct *handle,
+				 const struct smb_filename *smb_fname,
+				 const char *name,
+				 const void *value,
+				 size_t size,
+				 int flags);
+int vfs_not_implemented_fsetxattr(vfs_handle_struct *handle, struct files_struct *fsp,
+				  const char *name, const void *value, size_t size,
+				  int flags);
+bool vfs_not_implemented_aio_force(struct vfs_handle_struct *handle,
+				   struct files_struct *fsp);
+NTSTATUS vfs_not_implemented_audit_file(struct vfs_handle_struct *handle,
+					struct smb_filename *file,
+					struct security_acl *sacl,
+					uint32_t access_requested,
+					uint32_t access_denied);
+NTSTATUS vfs_not_implemented_durable_cookie(struct vfs_handle_struct *handle,
+					    struct files_struct *fsp,
+					    TALLOC_CTX *mem_ctx,
+					    DATA_BLOB *cookie);
+NTSTATUS vfs_not_implemented_durable_disconnect(struct vfs_handle_struct *handle,
+						struct files_struct *fsp,
+						const DATA_BLOB old_cookie,
+						TALLOC_CTX *mem_ctx,
+						DATA_BLOB *new_cookie);
+NTSTATUS vfs_not_implemented_durable_reconnect(struct vfs_handle_struct *handle,
+					       struct smb_request *smb1req,
+					       struct smbXsrv_open *op,
+					       const DATA_BLOB old_cookie,
+					       TALLOC_CTX *mem_ctx,
+					       struct files_struct **fsp,
+					       DATA_BLOB *new_cookie);
 #endif /* _VFS_H */
diff --git a/source3/modules/vfs_aio_pthread.c b/source3/modules/vfs_aio_pthread.c
index c1d1a7d..cf5b7f6 100644
--- a/source3/modules/vfs_aio_pthread.c
+++ b/source3/modules/vfs_aio_pthread.c
@@ -51,7 +51,6 @@ struct aio_open_private_data {
 	const char *fname;


-- 
Samba Shared Repository



More information about the samba-cvs mailing list