[PATCHES] vfs: remove SMB_VFS_INIT_SEARCH_OP

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCHES] vfs: remove SMB_VFS_INIT_SEARCH_OP

Samba - samba-technical mailing list
Hi,

This patch set removes SMB_VFS_INIT_SEARCH_OP and all its uses and
implementations.

- Originally, this op was added in 2009 to support Isilon Onefs (commit
6272f4c2f453c509b8a3893d4c2ac5fc356b348d).
- Currently, all in-tree VFS modules treat this as a no-op.
- SMB2 code omits calling SMB_VFS_INIT_SEARCH_OP, which kind of hints
that no maintained out-of-tree module uses it (or people would complain)

Please review and maybe push...

Thanks,
Uri.

remove-vfs-init-search-op.patch.txt (23K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCHES] vfs: remove SMB_VFS_INIT_SEARCH_OP

Samba - samba-technical mailing list
On Fri, Nov 10, 2017 at 10:14:54PM +0200, Uri Simchoni via samba-technical wrote:

> Hi,
>
> This patch set removes SMB_VFS_INIT_SEARCH_OP and all its uses and
> implementations.
>
> - Originally, this op was added in 2009 to support Isilon Onefs (commit
> 6272f4c2f453c509b8a3893d4c2ac5fc356b348d).
> - Currently, all in-tree VFS modules treat this as a no-op.
> - SMB2 code omits calling SMB_VFS_INIT_SEARCH_OP, which kind of hints
> that no maintained out-of-tree module uses it (or people would complain)
>
> Please review and maybe push...

RB+. Thanks for the cleanup. You can push, or I'll do it
once my current autobuild finishes !

Thanks Uri !

Jeremy.

> From 932af3ccd5d6c1b63190a494dfca7ec69b4114cb Mon Sep 17 00:00:00 2001
> From: Uri Simchoni <[hidden email]>
> Date: Fri, 10 Nov 2017 21:32:49 +0200
> Subject: [PATCH 1/9] smbd: remove calls to dptr_init_search_op()
>
> dptr_init_search_op() invokes a VFS operation which is
> a no-op in all in-tree VFS modules. Furthermore,
> dptr_init_search_op() is not being called from SMB2 search
> code, which hints that no out-of-tree VFS module needs it.
>
> Signed-off-by: Uri Simchoni <[hidden email]>
> ---
>  source3/smbd/reply.c | 3 ---
>  1 file changed, 3 deletions(-)
>
> diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
> index 7b07078..9c82ebf 100644
> --- a/source3/smbd/reply.c
> +++ b/source3/smbd/reply.c
> @@ -1896,9 +1896,6 @@ void reply_search(struct smb_request *req)
>  
>   DEBUG(4,("dptr_num is %d\n",dptr_num));
>  
> - /* Initialize per SMBsearch/SMBffirst/SMBfunique operation data */
> - dptr_init_search_op(dirptr);
> -
>   if ((dirtype&0x1F) == FILE_ATTRIBUTE_VOLUME) {
>   char buf[DIR_STRUCT_SIZE];
>   memcpy(buf,status,21);
> --
> 2.9.5
>
>
> From 19c1bfcb44c0441ca88d80f266f478258b0334d3 Mon Sep 17 00:00:00 2001
> From: Uri Simchoni <[hidden email]>
> Date: Fri, 10 Nov 2017 21:35:54 +0200
> Subject: [PATCH 2/9] smbd: remove calls to dptr_init_search_op() from TRANS2
>  search code
>
> dptr_init_search_op() invokes VFS operations which are no-op in all
> in-tree VFS modules. Furthermore, it's not being called by the SMB2
> search code, so probably it's not being used by any out-of-tree VFS
> module either.
>
> Signed-off-by: Uri Simchoni <[hidden email]>
> ---
>  source3/smbd/trans2.c | 6 ------
>  1 file changed, 6 deletions(-)
>
> diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
> index de6073a..dbad71b 100644
> --- a/source3/smbd/trans2.c
> +++ b/source3/smbd/trans2.c
> @@ -2867,9 +2867,6 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
>   dptr_num = dptr_dnum(dirptr);
>   DEBUG(4,("dptr_num is %d, wcard = %s, attr = %d\n", dptr_num, mask, dirtype));
>  
> - /* Initialize per TRANS2_FIND_FIRST operation data */
> - dptr_init_search_op(dirptr);
> -
>   /* We don't need to check for VOL here as this is returned by
>   a different TRANS2 call. */
>  
> @@ -3237,9 +3234,6 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
>   dptr_TellDir(dirptr),
>   (int)backup_priv));
>  
> - /* Initialize per TRANS2_FIND_NEXT operation data */
> - dptr_init_search_op(dirptr);
> -
>   /* We don't need to check for VOL here as this is returned by
>   a different TRANS2 call. */
>  
> --
> 2.9.5
>
>
> From 6bf85176b4ead75529b7fa81b2c37f7ccf1fca57 Mon Sep 17 00:00:00 2001
> From: Uri Simchoni <[hidden email]>
> Date: Fri, 10 Nov 2017 21:38:41 +0200
> Subject: [PATCH 3/9] smbd: remove dptr_init_search_op()
>
> This function is now not being used.
>
> Signed-off-by: Uri Simchoni <[hidden email]>
> ---
>  source3/smbd/dir.c   | 8 --------
>  source3/smbd/proto.h | 1 -
>  2 files changed, 9 deletions(-)
>
> diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c
> index 19e2964..6621b4e 100644
> --- a/source3/smbd/dir.c
> +++ b/source3/smbd/dir.c
> @@ -887,14 +887,6 @@ bool dptr_SearchDir(struct dptr_struct *dptr, const char *name, long *poffset, S
>  }
>  
>  /****************************************************************************
> - Initialize variables & state data at the beginning of all search SMB requests.
> -****************************************************************************/
> -void dptr_init_search_op(struct dptr_struct *dptr)
> -{
> - SMB_VFS_INIT_SEARCH_OP(dptr->conn, dptr->dir_hnd->dir);
> -}
> -
> -/****************************************************************************
>   Map a native directory offset to a 32-bit cookie.
>  ****************************************************************************/
>  
> diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
> index a688341..565ba08 100644
> --- a/source3/smbd/proto.h
> +++ b/source3/smbd/proto.h
> @@ -207,7 +207,6 @@ int dptr_dnum(struct dptr_struct *dptr);
>  bool dptr_get_priv(struct dptr_struct *dptr);
>  void dptr_set_priv(struct dptr_struct *dptr);
>  bool dptr_SearchDir(struct dptr_struct *dptr, const char *name, long *poffset, SMB_STRUCT_STAT *pst);
> -void dptr_init_search_op(struct dptr_struct *dptr);
>  bool dptr_fill(struct smbd_server_connection *sconn,
>         char *buf1,unsigned int key);
>  struct dptr_struct *dptr_fetch(struct smbd_server_connection *sconn,
> --
> 2.9.5
>
>
> From 22340a9b117eb6e788290a55a45a0207ba6f09ae Mon Sep 17 00:00:00 2001
> From: Uri Simchoni <[hidden email]>
> Date: Fri, 10 Nov 2017 21:20:47 +0200
> Subject: [PATCH 4/9] VFS examples: remove init_search_ops
>
> Signed-off-by: Uri Simchoni <[hidden email]>
> ---
>  examples/VFS/skel_opaque.c      | 6 ------
>  examples/VFS/skel_transparent.c | 6 ------
>  2 files changed, 12 deletions(-)
>
> diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
> index 614dcff..e6c066d 100644
> --- a/examples/VFS/skel_opaque.c
> +++ b/examples/VFS/skel_opaque.c
> @@ -185,11 +185,6 @@ static int skel_closedir(vfs_handle_struct *handle, DIR *dir)
>   return -1;
>  }
>  
> -static void skel_init_search_op(struct vfs_handle_struct *handle, DIR *dirp)
> -{
> - ;
> -}
> -
>  static int skel_open(vfs_handle_struct *handle, struct smb_filename *smb_fname,
>       files_struct *fsp, int flags, mode_t mode)
>  {
> @@ -954,7 +949,6 @@ struct vfs_fn_pointers skel_opaque_fns = {
>   .mkdir_fn = skel_mkdir,
>   .rmdir_fn = skel_rmdir,
>   .closedir_fn = skel_closedir,
> - .init_search_op_fn = skel_init_search_op,
>  
>   /* File operations */
>  
> diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
> index 2f59a3d..59d1634 100644
> --- a/examples/VFS/skel_transparent.c
> +++ b/examples/VFS/skel_transparent.c
> @@ -182,11 +182,6 @@ static int skel_closedir(vfs_handle_struct *handle, DIR *dir)
>   return SMB_VFS_NEXT_CLOSEDIR(handle, dir);
>  }
>  
> -static void skel_init_search_op(struct vfs_handle_struct *handle, DIR *dirp)
> -{
> - SMB_VFS_NEXT_INIT_SEARCH_OP(handle, dirp);
> -}
> -
>  static int skel_open(vfs_handle_struct *handle, struct smb_filename *smb_fname,
>       files_struct *fsp, int flags, mode_t mode)
>  {
> @@ -1127,7 +1122,6 @@ struct vfs_fn_pointers skel_transparent_fns = {
>   .mkdir_fn = skel_mkdir,
>   .rmdir_fn = skel_rmdir,
>   .closedir_fn = skel_closedir,
> - .init_search_op_fn = skel_init_search_op,
>  
>   /* File operations */
>  
> --
> 2.9.5
>
>
> From 47af19092aec5fe9b849074be865c7a66d8074a7 Mon Sep 17 00:00:00 2001
> From: Uri Simchoni <[hidden email]>
> Date: Fri, 10 Nov 2017 21:39:54 +0200
> Subject: [PATCH 5/9] vfs_glusterfs: remove init_search_op handling
>
> This VFS function is about to be removed. It can be
> removed by a separate commit because both the glusterfs
> and the default implementations are no-ops.
>
> Signed-off-by: Uri Simchoni <[hidden email]>
> ---
>  source3/modules/vfs_glusterfs.c | 7 -------
>  1 file changed, 7 deletions(-)
>
> diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
> index 3534ed7..17f7178 100644
> --- a/source3/modules/vfs_glusterfs.c
> +++ b/source3/modules/vfs_glusterfs.c
> @@ -541,12 +541,6 @@ static void vfs_gluster_rewinddir(struct vfs_handle_struct *handle, DIR *dirp)
>   glfs_seekdir((void *)dirp, 0);
>  }
>  
> -static void vfs_gluster_init_search_op(struct vfs_handle_struct *handle,
> -       DIR *dirp)
> -{
> - return;
> -}
> -
>  static int vfs_gluster_mkdir(struct vfs_handle_struct *handle,
>       const struct smb_filename *smb_fname,
>       mode_t mode)
> @@ -1434,7 +1428,6 @@ static struct vfs_fn_pointers glusterfs_fns = {
>   .mkdir_fn = vfs_gluster_mkdir,
>   .rmdir_fn = vfs_gluster_rmdir,
>   .closedir_fn = vfs_gluster_closedir,
> - .init_search_op_fn = vfs_gluster_init_search_op,
>  
>   /* File Operations */
>  
> --
> 2.9.5
>
>
> From 5b62d5163e4b3f9c2ff8cba190dd04be105731d5 Mon Sep 17 00:00:00 2001
> From: Uri Simchoni <[hidden email]>
> Date: Fri, 10 Nov 2017 21:47:29 +0200
> Subject: [PATCH 6/9] vfs_time_audit: remove init_search_op implementation
>
> This VFS call is about to be removed in a following commit.
>
> Signed-off-by: Uri Simchoni <[hidden email]>
> ---
>  source3/modules/vfs_time_audit.c | 17 -----------------
>  1 file changed, 17 deletions(-)
>
> diff --git a/source3/modules/vfs_time_audit.c b/source3/modules/vfs_time_audit.c
> index 7116796..8e08a7b 100644
> --- a/source3/modules/vfs_time_audit.c
> +++ b/source3/modules/vfs_time_audit.c
> @@ -550,22 +550,6 @@ static int smb_time_audit_closedir(vfs_handle_struct *handle,
>   return result;
>  }
>  
> -static void smb_time_audit_init_search_op(vfs_handle_struct *handle,
> -  DIR *dirp)
> -{
> - struct timespec ts1,ts2;
> - double timediff;
> -
> - clock_gettime_mono(&ts1);
> - SMB_VFS_NEXT_INIT_SEARCH_OP(handle, dirp);
> - clock_gettime_mono(&ts2);
> - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9;
> -
> - if (timediff > audit_timeout) {
> - smb_time_audit_log("init_search_op", timediff);
> - }
> -}
> -
>  static int smb_time_audit_open(vfs_handle_struct *handle,
>         struct smb_filename *fname,
>         files_struct *fsp,
> @@ -2708,7 +2692,6 @@ static struct vfs_fn_pointers vfs_time_audit_fns = {
>   .mkdir_fn = smb_time_audit_mkdir,
>   .rmdir_fn = smb_time_audit_rmdir,
>   .closedir_fn = smb_time_audit_closedir,
> - .init_search_op_fn = smb_time_audit_init_search_op,
>   .open_fn = smb_time_audit_open,
>   .create_file_fn = smb_time_audit_create_file,
>   .close_fn = smb_time_audit_close,
> --
> 2.9.5
>
>
> From 206cf364e6684090021959191bf193d924817129 Mon Sep 17 00:00:00 2001
> From: Uri Simchoni <[hidden email]>
> Date: Fri, 10 Nov 2017 21:48:26 +0200
> Subject: [PATCH 7/9] vfs_media_harmony: remove handling of init_search_op
>
> This VFS function is about to be removed in a following commit.
> In the meantime, not handling it by vfs_media_harmony poses no
> issue because the underlying implenentation is a no-op.
>
> Signed-off-by: Uri Simchoni <[hidden email]>
> ---
>  source3/modules/vfs_media_harmony.c | 13 -------------
>  1 file changed, 13 deletions(-)
>
> diff --git a/source3/modules/vfs_media_harmony.c b/source3/modules/vfs_media_harmony.c
> index e39a444..43e6908 100644
> --- a/source3/modules/vfs_media_harmony.c
> +++ b/source3/modules/vfs_media_harmony.c
> @@ -1129,18 +1129,6 @@ static int mh_closedir(vfs_handle_struct *handle,
>  }
>  
>  /*
> - * Success: no success result defined.
> - * Failure: no failure result defined.
> - */
> -static void mh_init_search_op(vfs_handle_struct *handle,
> - DIR *dirp)
> -{
> - DEBUG(MH_INFO_DEBUG, ("Entering and leaving mh_init_search_op\n"));
> - SMB_VFS_NEXT_INIT_SEARCH_OP(handle,
> - ((mh_dirinfo_struct*)dirp)->dirstream);
> -}
> -
> -/*
>   * Success: return non-negative file descriptor
>   * Failure: set errno, return -1
>   */
> @@ -2321,7 +2309,6 @@ static struct vfs_fn_pointers vfs_mh_fns = {
>   .mkdir_fn = mh_mkdir,
>   .rmdir_fn = mh_rmdir,
>   .closedir_fn = mh_closedir,
> - .init_search_op_fn = mh_init_search_op,
>  
>   /* File operations */
>  
> --
> 2.9.5
>
>
> From 882514cbb023a9ebd1a0f8880889724d2c0ac8fd Mon Sep 17 00:00:00 2001
> From: Uri Simchoni <[hidden email]>
> Date: Fri, 10 Nov 2017 21:50:17 +0200
> Subject: [PATCH 8/9] vfs_unityed_media: remove handling of init_search_op
>
> init_search_op is about to be removed from the VFS in
> a following commit. In the meantime, removing it poses
> no issue because he underlying impementation is a no-op.
>
> Signed-off-by: Uri Simchoni <[hidden email]>
> ---
>  source3/modules/vfs_unityed_media.c | 10 ----------
>  1 file changed, 10 deletions(-)
>
> diff --git a/source3/modules/vfs_unityed_media.c b/source3/modules/vfs_unityed_media.c
> index 34881bc..f55061a 100644
> --- a/source3/modules/vfs_unityed_media.c
> +++ b/source3/modules/vfs_unityed_media.c
> @@ -846,15 +846,6 @@ static int um_closedir(vfs_handle_struct *handle,
>   return SMB_VFS_NEXT_CLOSEDIR(handle, realdirp);
>  }
>  
> -static void um_init_search_op(vfs_handle_struct *handle,
> -      DIR *dirp)
> -{
> - DEBUG(10, ("Entering and leaving um_init_search_op\n"));
> -
> - SMB_VFS_NEXT_INIT_SEARCH_OP(handle,
> -    ((um_dirinfo_struct*)dirp)->dirstream);
> -}
> -
>  static int um_open(vfs_handle_struct *handle,
>     struct smb_filename *smb_fname,
>     files_struct *fsp,
> @@ -1908,7 +1899,6 @@ static struct vfs_fn_pointers vfs_um_fns = {
>   .mkdir_fn = um_mkdir,
>   .rmdir_fn = um_rmdir,
>   .closedir_fn = um_closedir,
> - .init_search_op_fn = um_init_search_op,
>  
>   /* File operations */
>  
> --
> 2.9.5
>
>
> From 09ae182c9ce2b979f9f71ca690c59cad4bc4568c Mon Sep 17 00:00:00 2001
> From: Uri Simchoni <[hidden email]>
> Date: Fri, 10 Nov 2017 21:53:58 +0200
> Subject: [PATCH 9/9] vfs: remove SMB_VFS_INIT_SEARCH_OP
>
> This VFS is no longer being called, hence removed.
>
> Signed-off-by: Uri Simchoni <[hidden email]>
> ---
>  source3/include/vfs.h            |  6 ++----
>  source3/include/vfs_macros.h     |  5 -----
>  source3/modules/vfs_default.c    |  7 -------
>  source3/modules/vfs_full_audit.c | 11 -----------
>  source3/smbd/vfs.c               |  7 -------
>  5 files changed, 2 insertions(+), 34 deletions(-)
>
> diff --git a/source3/include/vfs.h b/source3/include/vfs.h
> index d71d7cc..7372440 100644
> --- a/source3/include/vfs.h
> +++ b/source3/include/vfs.h
> @@ -244,8 +244,9 @@
>  /* Version 37 - Remove SMB_VFS_STRICT_UNLOCK */
>  /* Version 37 - Rename SMB_VFS_STRICT_LOCK to
>                  SMB_VFS_STRICT_LOCK_CHECK */
> +/* Version 38 - Remove SMB_VFS_INIT_SEARCH_OP */
>  
> -#define SMB_VFS_INTERFACE_VERSION 37
> +#define SMB_VFS_INTERFACE_VERSION 38
>  
>  /*
>      All intercepted VFS operations must be declared as static functions inside module source
> @@ -656,7 +657,6 @@ struct vfs_fn_pointers {
>   int (*rmdir_fn)(struct vfs_handle_struct *handle,
>   const struct smb_filename *smb_fname);
>   int (*closedir_fn)(struct vfs_handle_struct *handle, DIR *dir);
> - void (*init_search_op_fn)(struct vfs_handle_struct *handle, DIR *dirp);
>  
>   /* File operations */
>  
> @@ -1145,8 +1145,6 @@ int smb_vfs_call_rmdir(struct vfs_handle_struct *handle,
>   const struct smb_filename *smb_fname);
>  int smb_vfs_call_closedir(struct vfs_handle_struct *handle,
>    DIR *dir);
> -void smb_vfs_call_init_search_op(struct vfs_handle_struct *handle,
> - DIR *dirp);
>  int smb_vfs_call_open(struct vfs_handle_struct *handle,
>        struct smb_filename *smb_fname, struct files_struct *fsp,
>        int flags, mode_t mode);
> diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h
> index 3cce192..dcf788e 100644
> --- a/source3/include/vfs_macros.h
> +++ b/source3/include/vfs_macros.h
> @@ -124,11 +124,6 @@
>  #define SMB_VFS_NEXT_CLOSEDIR(handle, dir) \
>   smb_vfs_call_closedir((handle)->next, (dir))
>  
> -#define SMB_VFS_INIT_SEARCH_OP(conn, dirp) \
> - smb_vfs_call_init_search_op((conn)->vfs_handles, (dirp))
> -#define SMB_VFS_NEXT_INIT_SEARCH_OP(handle, dirp) \
> - smb_vfs_call_init_search_op((handle)->next, (dirp))
> -
>  /* File operations */
>  #define SMB_VFS_OPEN(conn, fname, fsp, flags, mode) \
>   smb_vfs_call_open((conn)->vfs_handles, (fname), (fsp), (flags), (mode))
> diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
> index 53d9785..3379493 100644
> --- a/source3/modules/vfs_default.c
> +++ b/source3/modules/vfs_default.c
> @@ -554,12 +554,6 @@ static int vfswrap_closedir(vfs_handle_struct *handle, DIR *dirp)
>   return result;
>  }
>  
> -static void vfswrap_init_search_op(vfs_handle_struct *handle,
> -   DIR *dirp)
> -{
> - /* Default behavior is a NOOP */
> -}
> -
>  /* File operations */
>  
>  static int vfswrap_open(vfs_handle_struct *handle,
> @@ -3052,7 +3046,6 @@ static struct vfs_fn_pointers vfs_default_fns = {
>   .mkdir_fn = vfswrap_mkdir,
>   .rmdir_fn = vfswrap_rmdir,
>   .closedir_fn = vfswrap_closedir,
> - .init_search_op_fn = vfswrap_init_search_op,
>  
>   /* File operations */
>  
> diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
> index a205007..b847159 100644
> --- a/source3/modules/vfs_full_audit.c
> +++ b/source3/modules/vfs_full_audit.c
> @@ -110,7 +110,6 @@ typedef enum _vfs_op_type {
>   SMB_VFS_OP_MKDIR,
>   SMB_VFS_OP_RMDIR,
>   SMB_VFS_OP_CLOSEDIR,
> - SMB_VFS_OP_INIT_SEARCH_OP,
>  
>   /* File operations */
>  
> @@ -256,7 +255,6 @@ 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" },
> @@ -930,14 +928,6 @@ static int smb_full_audit_closedir(vfs_handle_struct *handle,
>   return result;
>  }
>  
> -static void smb_full_audit_init_search_op(vfs_handle_struct *handle,
> - DIR *dirp)
> -{
> - SMB_VFS_NEXT_INIT_SEARCH_OP(handle, dirp);
> -
> - do_log(SMB_VFS_OP_INIT_SEARCH_OP, True, handle, "");
> -}
> -
>  static int smb_full_audit_open(vfs_handle_struct *handle,
>         struct smb_filename *smb_fname,
>         files_struct *fsp, int flags, mode_t mode)
> @@ -2516,7 +2506,6 @@ static struct vfs_fn_pointers vfs_full_audit_fns = {
>   .mkdir_fn = smb_full_audit_mkdir,
>   .rmdir_fn = smb_full_audit_rmdir,
>   .closedir_fn = smb_full_audit_closedir,
> - .init_search_op_fn = smb_full_audit_init_search_op,
>   .open_fn = smb_full_audit_open,
>   .create_file_fn = smb_full_audit_create_file,
>   .close_fn = smb_full_audit_close,
> diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c
> index d4fccb7..5970220 100644
> --- a/source3/smbd/vfs.c
> +++ b/source3/smbd/vfs.c
> @@ -1685,13 +1685,6 @@ int smb_vfs_call_closedir(struct vfs_handle_struct *handle,
>   return handle->fns->closedir_fn(handle, dir);
>  }
>  
> -void smb_vfs_call_init_search_op(struct vfs_handle_struct *handle,
> - DIR *dirp)
> -{
> - VFS_FIND(init_search_op);
> - handle->fns->init_search_op_fn(handle, dirp);
> -}
> -
>  int smb_vfs_call_open(struct vfs_handle_struct *handle,
>        struct smb_filename *smb_fname, struct files_struct *fsp,
>        int flags, mode_t mode)
> --
> 2.9.5
>