The branch, master has been updated
       via  8e43af0 s3: VFS: Change SMB_VFS_SYMLINK to use const struct 
smb_filename * instead of const char *.
       via  6ae2d86 s3: VFS: Change SMB_VFS_READLINK to use const struct 
smb_filename * instead of const char *.
       via  4ad426a s3: VFS: Change SMB_VFS_STATVFS to use const struct 
smb_filename * instead of const char *.
       via  fc92d45 s3: VFS: Change SMB_VFS_LINK to use const struct 
smb_filename * instead of const char *.
       via  0da7641 s3: VFS: Change SMB_VFS_GET_QUOTA to use const struct 
smb_filename * instead of const char *.
       via  0037815 s3: VFS: Change SMB_VFS_DISK_FREE to use const struct 
smb_filename * instead of const char *.
       via  730de8e s3: VFS: Change SMB_VFS_CHFLAGS to use const struct 
smb_filename * instead of const char *.
       via  c3d4521 s3: VFS: Change SMB_VFS_MKNOD to use const struct 
smb_filename * instead of const char *.
       via  fed54ca s3: VFS: Remove old traces of smb_vfs_call_llistxattr().
      from  156fe6e s4:libcli/smb_composite: make the additional gensec_update 
steps async

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


- Log -----------------------------------------------------------------
commit 8e43af0f81e644411f5a719860383373b210cc8b
Author: Jeremy Allison <j...@samba.org>
Date:   Thu Jun 8 16:25:58 2017 -0700

    s3: VFS: Change SMB_VFS_SYMLINK to use const struct smb_filename * instead 
of const char *.
    
    We need to migrate all pathname based VFS calls to use a struct
    to finish modernising the VFS with extra timestamp and flags parameters.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>
    
    Autobuild-User(master): Jeremy Allison <j...@samba.org>
    Autobuild-Date(master): Sun Jun 18 07:03:18 CEST 2017 on sn-devel-144

commit 6ae2d86b9ccc0ebe73dc911a1d5f06bd53613acf
Author: Jeremy Allison <j...@samba.org>
Date:   Wed Jun 7 15:03:37 2017 -0700

    s3: VFS: Change SMB_VFS_READLINK to use const struct smb_filename * instead 
of const char *.
    
    We need to migrate all pathname based VFS calls to use a struct
    to finish modernising the VFS with extra timestamp and flags parameters.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

commit 4ad426a7c6c9fffa41df5bcafd9f420c257b6805
Author: Jeremy Allison <j...@samba.org>
Date:   Fri Jun 2 15:26:06 2017 -0700

    s3: VFS: Change SMB_VFS_STATVFS to use const struct smb_filename * instead 
of const char *.
    
    We need to migrate all pathname based VFS calls to use a struct
    to finish modernising the VFS with extra timestamp and flags parameters.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

commit fc92d451cf3162807e2493c62fa7617863adf2ba
Author: Jeremy Allison <j...@samba.org>
Date:   Fri Jun 2 14:21:54 2017 -0700

    s3: VFS: Change SMB_VFS_LINK to use const struct smb_filename * instead of 
const char *.
    
    We need to migrate all pathname based VFS calls to use a struct
    to finish modernising the VFS with extra timestamp and flags parameters.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

commit 0da76414fdc6a0aacea6282a76b384a702615408
Author: Jeremy Allison <j...@samba.org>
Date:   Thu Jun 1 11:45:25 2017 -0700

    s3: VFS: Change SMB_VFS_GET_QUOTA to use const struct smb_filename * 
instead of const char *.
    
    We need to migrate all pathname based VFS calls to use a struct
    to finish modernising the VFS with extra timestamp and flags parameters.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

commit 0037815453fa6141d3c0325c3ab197326324ab53
Author: Jeremy Allison <j...@samba.org>
Date:   Tue May 23 10:40:47 2017 -0700

    s3: VFS: Change SMB_VFS_DISK_FREE to use const struct smb_filename * 
instead of const char *.
    
    We need to migrate all pathname based VFS calls to use a struct
    to finish modernising the VFS with extra timestamp and flags parameters.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

commit 730de8e091879a53493a0c96b542603cd52174a2
Author: Jeremy Allison <j...@samba.org>
Date:   Fri May 19 16:15:55 2017 -0700

    s3: VFS: Change SMB_VFS_CHFLAGS to use const struct smb_filename * instead 
of const char *.
    
    We need to migrate all pathname based VFS calls to use a struct
    to finish modernising the VFS with extra timestamp and flags parameters.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

commit c3d45216dd7df2a084b7d1af63f207db0c87b53d
Author: Jeremy Allison <j...@samba.org>
Date:   Fri May 19 15:01:52 2017 -0700

    s3: VFS: Change SMB_VFS_MKNOD to use const struct smb_filename * instead of 
const char *.
    
    We need to migrate all pathname based VFS calls to use a struct
    to finish modernising the VFS with extra timestamp and flags parameters.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

commit fed54ca01d4dc7796edb9ab337b3529416ce1424
Author: Jeremy Allison <j...@samba.org>
Date:   Thu Jun 1 10:51:45 2017 -0700

    s3: VFS: Remove old traces of smb_vfs_call_llistxattr().
    
    This call doesn't exist anymore.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

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

Summary of changes:
 examples/VFS/skel_opaque.c          |  44 +++---
 examples/VFS/skel_transparent.c     |  60 +++++----
 source3/include/vfs.h               | 102 ++++++++++----
 source3/include/vfs_macros.h        |  48 +++----
 source3/modules/vfs_cap.c           | 196 +++++++++++++++++++++++----
 source3/modules/vfs_catia.c         |  27 +++-
 source3/modules/vfs_ceph.c          |  84 +++++++-----
 source3/modules/vfs_default.c       |  59 ++++++---
 source3/modules/vfs_default_quota.c |  17 ++-
 source3/modules/vfs_expand_msdfs.c  |   6 +-
 source3/modules/vfs_fake_dfq.c      |  31 +++--
 source3/modules/vfs_full_audit.c    |  65 +++++----
 source3/modules/vfs_glusterfs.c     |  54 +++++---
 source3/modules/vfs_gpfs.c          |  35 +++--
 source3/modules/vfs_media_harmony.c | 187 +++++++++++---------------
 source3/modules/vfs_shadow_copy2.c  | 184 +++++++++++++++++--------
 source3/modules/vfs_snapper.c       | 258 ++++++++++++++++++++++++------------
 source3/modules/vfs_syncops.c       |  68 +++++-----
 source3/modules/vfs_time_audit.c    |  71 ++++++----
 source3/modules/vfs_unityed_media.c | 139 +++++++++----------
 source3/smbd/dfree.c                |   2 +-
 source3/smbd/msdfs.c                |  99 +++++++-------
 source3/smbd/ntquotas.c             |  20 ++-
 source3/smbd/open.c                 |   2 +-
 source3/smbd/proto.h                |   3 +-
 source3/smbd/quotas.c               |  10 +-
 source3/smbd/trans2.c               |  31 ++---
 source3/smbd/vfs.c                  |  61 +++++----
 source3/torture/cmd_vfs.c           |  59 ++++++++-
 29 files changed, 1292 insertions(+), 730 deletions(-)


Changeset truncated at 500 lines:

diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index c5d4359..d5c468e 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -44,9 +44,11 @@ static void skel_disconnect(vfs_handle_struct *handle)
        ;
 }
 
-static uint64_t skel_disk_free(vfs_handle_struct *handle, const char *path,
-                              uint64_t *bsize,
-                              uint64_t *dfree, uint64_t *dsize)
+static uint64_t skel_disk_free(vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               uint64_t *bsize,
+                               uint64_t *dfree,
+                               uint64_t *dsize)
 {
        *bsize = 0;
        *dfree = 0;
@@ -54,9 +56,11 @@ static uint64_t skel_disk_free(vfs_handle_struct *handle, 
const char *path,
        return 0;
 }
 
-static int skel_get_quota(vfs_handle_struct *handle, const char *path,
-                         enum SMB_QUOTA_TYPE qtype, unid_t id,
-                         SMB_DISK_QUOTA *dq)
+static int skel_get_quota(vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               enum SMB_QUOTA_TYPE qtype,
+                               unid_t id,
+                               SMB_DISK_QUOTA *dq)
 {
        errno = ENOSYS;
        return -1;
@@ -79,7 +83,8 @@ static int skel_get_shadow_copy_data(vfs_handle_struct 
*handle,
 }
 
 static int skel_statvfs(struct vfs_handle_struct *handle,
-                       const char *path, struct vfs_statvfs_struct *statbuf)
+                               const struct smb_filename *smb_fname,
+                               struct vfs_statvfs_struct *statbuf)
 {
        errno = ENOSYS;
        return -1;
@@ -471,29 +476,35 @@ static bool skel_getlock(vfs_handle_struct *handle, 
files_struct *fsp,
        return false;
 }
 
-static int skel_symlink(vfs_handle_struct *handle, const char *oldpath,
-                       const char *newpath)
+static int skel_symlink(vfs_handle_struct *handle,
+                       const char *link_contents,
+                       const struct smb_filename *new_smb_fname)
 {
        errno = ENOSYS;
        return -1;
 }
 
-static int skel_vfs_readlink(vfs_handle_struct *handle, const char *path,
-                            char *buf, size_t bufsiz)
+static int skel_vfs_readlink(vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
+                       char *buf,
+                       size_t bufsiz)
 {
        errno = ENOSYS;
        return -1;
 }
 
-static int skel_link(vfs_handle_struct *handle, const char *oldpath,
-                    const char *newpath)
+static int skel_link(vfs_handle_struct *handle,
+                       const struct smb_filename *old_smb_fname,
+                       const struct smb_filename *new_smb_fname)
 {
        errno = ENOSYS;
        return -1;
 }
 
-static int skel_mknod(vfs_handle_struct *handle, const char *path, mode_t mode,
-                     SMB_DEV_T dev)
+static int skel_mknod(vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
+                       mode_t mode,
+                       SMB_DEV_T dev)
 {
        errno = ENOSYS;
        return -1;
@@ -505,7 +516,8 @@ static char *skel_realpath(vfs_handle_struct *handle, const 
char *path)
        return NULL;
 }
 
-static int skel_chflags(vfs_handle_struct *handle, const char *path,
+static int skel_chflags(vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
                        uint flags)
 {
        errno = ENOSYS;
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index 91ea5c6..9387276 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -48,18 +48,22 @@ static void skel_disconnect(vfs_handle_struct *handle)
        SMB_VFS_NEXT_DISCONNECT(handle);
 }
 
-static uint64_t skel_disk_free(vfs_handle_struct *handle, const char *path,
-                              uint64_t *bsize,
-                              uint64_t *dfree, uint64_t *dsize)
+static uint64_t skel_disk_free(vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               uint64_t *bsize,
+                               uint64_t *dfree,
+                               uint64_t *dsize)
 {
-       return SMB_VFS_NEXT_DISK_FREE(handle, path, bsize, dfree, dsize);
+       return SMB_VFS_NEXT_DISK_FREE(handle, smb_fname, bsize, dfree, dsize);
 }
 
-static int skel_get_quota(vfs_handle_struct *handle, const char *path,
-                         enum SMB_QUOTA_TYPE qtype, unid_t id,
-                         SMB_DISK_QUOTA *dq)
+static int skel_get_quota(vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               enum SMB_QUOTA_TYPE qtype,
+                               unid_t id,
+                               SMB_DISK_QUOTA *dq)
 {
-       return SMB_VFS_NEXT_GET_QUOTA(handle, path, qtype, id, dq);
+       return SMB_VFS_NEXT_GET_QUOTA(handle, smb_fname, qtype, id, dq);
 }
 
 static int skel_set_quota(vfs_handle_struct *handle, enum SMB_QUOTA_TYPE qtype,
@@ -77,10 +81,11 @@ static int skel_get_shadow_copy_data(vfs_handle_struct 
*handle,
                                                 labels);
 }
 
-static int skel_statvfs(struct vfs_handle_struct *handle, const char *path,
+static int skel_statvfs(struct vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
                        struct vfs_statvfs_struct *statbuf)
 {
-       return SMB_VFS_NEXT_STATVFS(handle, path, statbuf);
+       return SMB_VFS_NEXT_STATVFS(handle, smb_fname, statbuf);
 }
 
 static uint32_t skel_fs_capabilities(struct vfs_handle_struct *handle,
@@ -565,28 +570,34 @@ static bool skel_getlock(vfs_handle_struct *handle, 
files_struct *fsp,
        return SMB_VFS_NEXT_GETLOCK(handle, fsp, poffset, pcount, ptype, ppid);
 }
 
-static int skel_symlink(vfs_handle_struct *handle, const char *oldpath,
-                       const char *newpath)
+static int skel_symlink(vfs_handle_struct *handle,
+                       const char *link_contents,
+                       const struct smb_filename *new_smb_fname)
 {
-       return SMB_VFS_NEXT_SYMLINK(handle, oldpath, newpath);
+       return SMB_VFS_NEXT_SYMLINK(handle, link_contents, new_smb_fname);
 }
 
-static int skel_vfs_readlink(vfs_handle_struct *handle, const char *path,
-                            char *buf, size_t bufsiz)
+static int skel_vfs_readlink(vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
+                       char *buf,
+                       size_t bufsiz)
 {
-       return SMB_VFS_NEXT_READLINK(handle, path, buf, bufsiz);
+       return SMB_VFS_NEXT_READLINK(handle, smb_fname, buf, bufsiz);
 }
 
-static int skel_link(vfs_handle_struct *handle, const char *oldpath,
-                    const char *newpath)
+static int skel_link(vfs_handle_struct *handle,
+                       const struct smb_filename *old_smb_fname,
+                       const struct smb_filename *new_smb_fname)
 {
-       return SMB_VFS_NEXT_LINK(handle, oldpath, newpath);
+       return SMB_VFS_NEXT_LINK(handle, old_smb_fname, new_smb_fname);
 }
 
-static int skel_mknod(vfs_handle_struct *handle, const char *path, mode_t mode,
-                     SMB_DEV_T dev)
+static int skel_mknod(vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
+                       mode_t mode,
+                       SMB_DEV_T dev)
 {
-       return SMB_VFS_NEXT_MKNOD(handle, path, mode, dev);
+       return SMB_VFS_NEXT_MKNOD(handle, smb_fname, mode, dev);
 }
 
 static char *skel_realpath(vfs_handle_struct *handle, const char *path)
@@ -594,10 +605,11 @@ static char *skel_realpath(vfs_handle_struct *handle, 
const char *path)
        return SMB_VFS_NEXT_REALPATH(handle, path);
 }
 
-static int skel_chflags(vfs_handle_struct *handle, const char *path,
+static int skel_chflags(vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
                        uint flags)
 {
-       return SMB_VFS_NEXT_CHFLAGS(handle, path, flags);
+       return SMB_VFS_NEXT_CHFLAGS(handle, smb_fname, flags);
 }
 
 static struct file_id skel_file_id_create(vfs_handle_struct *handle,
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index 30002bd..db555f2 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -213,6 +213,21 @@
                to const struct smb_filename * */
 /* Version 37 - Change getxattr from const char *
                to const struct smb_filename * */
+/* Version 37 - Change mknod from const char * to const struct smb_filename * 
*/
+/* Version 37 - Change chflags from const char *
+               to const struct smb_filename * */
+/* Version 37 - Change disk_free from const char *
+               to const struct smb_filename * */
+/* Version 37 - Change get_quota from const char *
+               to const struct smb_filename * */
+/* Version 37 - Change link from const char *
+               to const struct smb_filename * */
+/* Version 37 - Change statvfs from const char *
+               to const struct smb_filename * */
+/* Version 37 - Change readlink from const char *
+               to const struct smb_filename * */
+/* Version 37 - Change symlink from const char *
+               to const struct smb_filename * */
 
 #define SMB_VFS_INTERFACE_VERSION 37
 
@@ -597,14 +612,21 @@ struct vfs_fn_pointers {
 
        int (*connect_fn)(struct vfs_handle_struct *handle, const char 
*service, const char *user);
        void (*disconnect_fn)(struct vfs_handle_struct *handle);
-       uint64_t (*disk_free_fn)(struct vfs_handle_struct *handle, const char 
*path, uint64_t *bsize,
-                             uint64_t *dfree, uint64_t *dsize);
-       int (*get_quota_fn)(struct vfs_handle_struct *handle, const char *path,
-                           enum SMB_QUOTA_TYPE qtype, unid_t id,
-                           SMB_DISK_QUOTA *qt);
+       uint64_t (*disk_free_fn)(struct vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               uint64_t *bsize,
+                               uint64_t *dfree,
+                               uint64_t *dsize);
+       int (*get_quota_fn)(struct vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               enum SMB_QUOTA_TYPE qtype,
+                               unid_t id,
+                               SMB_DISK_QUOTA *qt);
        int (*set_quota_fn)(struct vfs_handle_struct *handle, enum 
SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt);
        int (*get_shadow_copy_data_fn)(struct vfs_handle_struct *handle, struct 
files_struct *fsp, struct shadow_copy_data *shadow_copy_data, bool labels);
-       int (*statvfs_fn)(struct vfs_handle_struct *handle, const char *path, 
struct vfs_statvfs_struct *statbuf);
+       int (*statvfs_fn)(struct vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               struct vfs_statvfs_struct *statbuf);
        uint32_t (*fs_capabilities_fn)(struct vfs_handle_struct *handle, enum 
timestamp_set_resolution *p_ts_res);
 
        /*
@@ -725,12 +747,24 @@ struct vfs_fn_pointers {
                               uint32_t share_mode, uint32_t access_mask);
        int (*linux_setlease_fn)(struct vfs_handle_struct *handle, struct 
files_struct *fsp, int leasetype);
        bool (*getlock_fn)(struct vfs_handle_struct *handle, struct 
files_struct *fsp, off_t *poffset, off_t *pcount, int *ptype, pid_t *ppid);
-       int (*symlink_fn)(struct vfs_handle_struct *handle, const char 
*oldpath, const char *newpath);
-       int (*readlink_fn)(struct vfs_handle_struct *handle, const char *path, 
char *buf, size_t bufsiz);
-       int (*link_fn)(struct vfs_handle_struct *handle, const char *oldpath, 
const char *newpath);
-       int (*mknod_fn)(struct vfs_handle_struct *handle, const char *path, 
mode_t mode, SMB_DEV_T dev);
+       int (*symlink_fn)(struct vfs_handle_struct *handle,
+                               const char *link_contents,
+                               const struct smb_filename *new_smb_fname);
+       int (*readlink_fn)(struct vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               char *buf,
+                               size_t bufsiz);
+       int (*link_fn)(struct vfs_handle_struct *handle,
+                               const struct smb_filename *old_smb_fname,
+                               const struct smb_filename *new_smb_fname);
+       int (*mknod_fn)(struct vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               mode_t mode,
+                               SMB_DEV_T dev);
        char *(*realpath_fn)(struct vfs_handle_struct *handle, const char 
*path);
-       int (*chflags_fn)(struct vfs_handle_struct *handle, const char *path, 
unsigned int flags);
+       int (*chflags_fn)(struct vfs_handle_struct *handle,
+                               const struct smb_filename *smb_fname,
+                               unsigned int flags);
        struct file_id (*file_id_create_fn)(struct vfs_handle_struct *handle,
                                            const SMB_STRUCT_STAT *sbuf);
        struct tevent_req *(*copy_chunk_send_fn)(struct vfs_handle_struct 
*handle,
@@ -1048,11 +1082,15 @@ int smb_vfs_call_connect(struct vfs_handle_struct 
*handle,
                         const char *service, const char *user);
 void smb_vfs_call_disconnect(struct vfs_handle_struct *handle);
 uint64_t smb_vfs_call_disk_free(struct vfs_handle_struct *handle,
-                               const char *path, uint64_t *bsize,
-                               uint64_t *dfree, uint64_t *dsize);
-int smb_vfs_call_get_quota(struct vfs_handle_struct *handle, const char *path,
-                          enum SMB_QUOTA_TYPE qtype, unid_t id,
-                          SMB_DISK_QUOTA *qt);
+                               const struct smb_filename *smb_filename,
+                               uint64_t *bsize,
+                               uint64_t *dfree,
+                               uint64_t *dsize);
+int smb_vfs_call_get_quota(struct vfs_handle_struct *handle,
+                               const struct smb_filename *smb_filename,
+                               enum SMB_QUOTA_TYPE qtype,
+                               unid_t id,
+                               SMB_DISK_QUOTA *qt);
 int smb_vfs_call_set_quota(struct vfs_handle_struct *handle,
                           enum SMB_QUOTA_TYPE qtype, unid_t id,
                           SMB_DISK_QUOTA *qt);
@@ -1060,8 +1098,9 @@ int smb_vfs_call_get_shadow_copy_data(struct 
vfs_handle_struct *handle,
                                      struct files_struct *fsp,
                                      struct shadow_copy_data *shadow_copy_data,
                                      bool labels);
-int smb_vfs_call_statvfs(struct vfs_handle_struct *handle, const char *path,
-                        struct vfs_statvfs_struct *statbuf);
+int smb_vfs_call_statvfs(struct vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
+                       struct vfs_statvfs_struct *statbuf);
 uint32_t smb_vfs_call_fs_capabilities(struct vfs_handle_struct *handle,
                                      enum timestamp_set_resolution *p_ts_res);
 /*
@@ -1216,17 +1255,24 @@ int smb_vfs_call_linux_setlease(struct 
vfs_handle_struct *handle,
 bool smb_vfs_call_getlock(struct vfs_handle_struct *handle,
                          struct files_struct *fsp, off_t *poffset,
                          off_t *pcount, int *ptype, pid_t *ppid);
-int smb_vfs_call_symlink(struct vfs_handle_struct *handle, const char *oldpath,
-                        const char *newpath);
+int smb_vfs_call_symlink(struct vfs_handle_struct *handle,
+                       const char *link_contents,
+                       const struct smb_filename *new_smb_fname);
 int smb_vfs_call_readlink(struct vfs_handle_struct *handle,
-                         const char *path, char *buf, size_t bufsiz);
-int smb_vfs_call_link(struct vfs_handle_struct *handle, const char *oldpath,
-                     const char *newpath);
-int smb_vfs_call_mknod(struct vfs_handle_struct *handle, const char *path,
-                      mode_t mode, SMB_DEV_T dev);
+                       const struct smb_filename *smb_fname,
+                       char *buf,
+                       size_t bufsiz);
+int smb_vfs_call_link(struct vfs_handle_struct *handle,
+                       const struct smb_filename *old_smb_fname,
+                       const struct smb_filename *new_smb_fname);
+int smb_vfs_call_mknod(struct vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
+                       mode_t mode,
+                       SMB_DEV_T dev);
 char *smb_vfs_call_realpath(struct vfs_handle_struct *handle, const char 
*path);
-int smb_vfs_call_chflags(struct vfs_handle_struct *handle, const char *path,
-                        unsigned int flags);
+int smb_vfs_call_chflags(struct vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
+                       unsigned int flags);
 struct file_id smb_vfs_call_file_id_create(struct vfs_handle_struct *handle,
                                           const SMB_STRUCT_STAT *sbuf);
 NTSTATUS smb_vfs_call_streaminfo(struct vfs_handle_struct *handle,
@@ -1381,8 +1427,6 @@ ssize_t smb_vfs_call_listxattr(struct vfs_handle_struct 
*handle,
                                const struct smb_filename *smb_fname,
                                char *list,
                                size_t size);
-ssize_t smb_vfs_call_llistxattr(struct vfs_handle_struct *handle,
-                               const char *path, char *list, size_t size);
 ssize_t smb_vfs_call_flistxattr(struct vfs_handle_struct *handle,
                                struct files_struct *fsp, char *list,
                                size_t size);
diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h
index 0ebd469..77646b4 100644
--- a/source3/include/vfs_macros.h
+++ b/source3/include/vfs_macros.h
@@ -39,15 +39,15 @@
 #define SMB_VFS_NEXT_DISCONNECT(handle) \
        smb_vfs_call_disconnect((handle)->next)
 
-#define SMB_VFS_DISK_FREE(conn, path, bsize, dfree ,dsize) \
-       smb_vfs_call_disk_free((conn)->vfs_handles, (path), (bsize), (dfree), 
(dsize))
-#define SMB_VFS_NEXT_DISK_FREE(handle, path, bsize, dfree ,dsize)\
-       smb_vfs_call_disk_free((handle)->next, (path), (bsize), (dfree), 
(dsize))
+#define SMB_VFS_DISK_FREE(conn, smb_fname, bsize, dfree ,dsize) \
+       smb_vfs_call_disk_free((conn)->vfs_handles, (smb_fname), (bsize), 
(dfree), (dsize))
+#define SMB_VFS_NEXT_DISK_FREE(handle, smb_fname, bsize, dfree ,dsize)\
+       smb_vfs_call_disk_free((handle)->next, (smb_fname), (bsize), (dfree), 
(dsize))
 
-#define SMB_VFS_GET_QUOTA(conn, path, qtype, id, qt)                           
\
-       smb_vfs_call_get_quota((conn)->vfs_handles, (path), (qtype), (id), (qt))
-#define SMB_VFS_NEXT_GET_QUOTA(handle, path, qtype, id, qt)                    
\
-       smb_vfs_call_get_quota((handle)->next, (path), (qtype), (id), (qt))
+#define SMB_VFS_GET_QUOTA(conn, smb_fname, qtype, id, qt)                      
     \
+       smb_vfs_call_get_quota((conn)->vfs_handles, (smb_fname), (qtype), (id), 
(qt))
+#define SMB_VFS_NEXT_GET_QUOTA(handle, smb_fname, qtype, id, qt)               
     \
+       smb_vfs_call_get_quota((handle)->next, (smb_fname), (qtype), (id), (qt))
 
 #define SMB_VFS_SET_QUOTA(conn, qtype, id, qt) \
        smb_vfs_call_set_quota((conn)->vfs_handles, (qtype), (id), (qt))
@@ -59,10 +59,10 @@
 #define SMB_VFS_NEXT_GET_SHADOW_COPY_DATA(handle, fsp, shadow_copy_data 
,labels) \
        smb_vfs_call_get_shadow_copy_data((handle)->next, (fsp), 
(shadow_copy_data), (labels))
 
-#define SMB_VFS_STATVFS(conn, path, statbuf) \
-       smb_vfs_call_statvfs((conn)->vfs_handles, (path), (statbuf))
-#define SMB_VFS_NEXT_STATVFS(handle, path, statbuf) \
-       smb_vfs_call_statvfs((handle)->next, (path), (statbuf))
+#define SMB_VFS_STATVFS(conn, smb_fname, statbuf) \
+       smb_vfs_call_statvfs((conn)->vfs_handles, (smb_fname), (statbuf))
+#define SMB_VFS_NEXT_STATVFS(handle, smb_fname, statbuf) \
+       smb_vfs_call_statvfs((handle)->next, (smb_fname), (statbuf))
 
 #define SMB_VFS_FS_CAPABILITIES(conn, p_ts_res) \
        smb_vfs_call_fs_capabilities((conn)->vfs_handles, (p_ts_res))
@@ -316,30 +316,30 @@
 #define SMB_VFS_NEXT_SYMLINK(handle, oldpath, newpath) \
        smb_vfs_call_symlink((handle)->next, (oldpath), (newpath))
 
-#define SMB_VFS_READLINK(conn, path, buf, bufsiz) \
-       smb_vfs_call_readlink((conn)->vfs_handles, (path), (buf), (bufsiz))
-#define SMB_VFS_NEXT_READLINK(handle, path, buf, bufsiz) \
-       smb_vfs_call_readlink((handle)->next, (path), (buf), (bufsiz))
+#define SMB_VFS_READLINK(conn, smb_fname, buf, bufsiz) \
+       smb_vfs_call_readlink((conn)->vfs_handles, (smb_fname), (buf), (bufsiz))
+#define SMB_VFS_NEXT_READLINK(handle, smb_fname, buf, bufsiz) \
+       smb_vfs_call_readlink((handle)->next, (smb_fname), (buf), (bufsiz))
 
 #define SMB_VFS_LINK(conn, oldpath, newpath) \
        smb_vfs_call_link((conn)->vfs_handles, (oldpath), (newpath))
 #define SMB_VFS_NEXT_LINK(handle, oldpath, newpath) \
        smb_vfs_call_link((handle)->next, (oldpath), (newpath))
 
-#define SMB_VFS_MKNOD(conn, path, mode, dev) \
-       smb_vfs_call_mknod((conn)->vfs_handles, (path), (mode), (dev))
-#define SMB_VFS_NEXT_MKNOD(handle, path, mode, dev) \
-       smb_vfs_call_mknod((handle)->next, (path), (mode), (dev))
+#define SMB_VFS_MKNOD(conn, smb_fname, mode, dev) \
+       smb_vfs_call_mknod((conn)->vfs_handles, (smb_fname), (mode), (dev))
+#define SMB_VFS_NEXT_MKNOD(handle, smb_fname, mode, dev) \
+       smb_vfs_call_mknod((handle)->next, (smb_fname), (mode), (dev))
 
 #define SMB_VFS_REALPATH(conn, path) \
        smb_vfs_call_realpath((conn)->vfs_handles, (path))
 #define SMB_VFS_NEXT_REALPATH(handle, path) \
        smb_vfs_call_realpath((handle)->next, (path))
 
-#define SMB_VFS_CHFLAGS(conn, path, flags) \
-       smb_vfs_call_chflags((conn)->vfs_handles, (path), (flags))
-#define SMB_VFS_NEXT_CHFLAGS(handle, path, flags) \
-       smb_vfs_call_chflags((handle)->next, (path), (flags))
+#define SMB_VFS_CHFLAGS(conn, smb_fname, flags) \
+       smb_vfs_call_chflags((conn)->vfs_handles, (smb_fname), (flags))
+#define SMB_VFS_NEXT_CHFLAGS(handle, smb_fname, flags) \
+       smb_vfs_call_chflags((handle)->next, (smb_fname), (flags))
 
 #define SMB_VFS_FILE_ID_CREATE(conn, sbuf) \
        smb_vfs_call_file_id_create((conn)->vfs_handles, (sbuf))
diff --git a/source3/modules/vfs_cap.c b/source3/modules/vfs_cap.c
index c124592..c07a059 100644
--- a/source3/modules/vfs_cap.c
+++ b/source3/modules/vfs_cap.c
@@ -29,29 +29,57 @@
 static char *capencode(TALLOC_CTX *ctx, const char *from);
 static char *capdecode(TALLOC_CTX *ctx, const char *from);
 
-static uint64_t cap_disk_free(vfs_handle_struct *handle, const char *path,
-                             uint64_t *bsize, uint64_t *dfree, uint64_t *dsize)
+static uint64_t cap_disk_free(vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
+                       uint64_t *bsize,
+                       uint64_t *dfree,
+                       uint64_t *dsize)
 {
-       char *cappath = capencode(talloc_tos(), path);
+       char *capname = capencode(talloc_tos(), smb_fname->base_name);
+       struct smb_filename *cap_smb_fname = NULL;
 
-       if (!cappath) {
+       if (!capname) {
+               errno = ENOMEM;
+               return (uint64_t)-1;
+       }
+       cap_smb_fname = synthetic_smb_fname(talloc_tos(),
+                                       capname,
+                                       NULL,
+                                       NULL,
+                                       smb_fname->flags);
+       if (cap_smb_fname == NULL) {
+               TALLOC_FREE(capname);
                errno = ENOMEM;
                return (uint64_t)-1;
        }
-       return SMB_VFS_NEXT_DISK_FREE(handle, cappath, bsize, dfree, dsize);
+       return SMB_VFS_NEXT_DISK_FREE(handle, cap_smb_fname,
+                       bsize, dfree, dsize);
 }
 
-static int cap_get_quota(vfs_handle_struct *handle, const char *path,
-                        enum SMB_QUOTA_TYPE qtype, unid_t id,
-                        SMB_DISK_QUOTA *dq)
+static int cap_get_quota(vfs_handle_struct *handle,
+                       const struct smb_filename *smb_fname,
+                       enum SMB_QUOTA_TYPE qtype,


-- 
Samba Shared Repository

Reply via email to