[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Sun Jun 18 05:04:03 UTC 2017


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 <jra at 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 <jra at samba.org>
    Reviewed-by: Richard Sharpe <realrichardsharpe at gmail.com>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Sun Jun 18 07:03:18 CEST 2017 on sn-devel-144

commit 6ae2d86b9ccc0ebe73dc911a1d5f06bd53613acf
Author: Jeremy Allison <jra at 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 <jra at samba.org>
    Reviewed-by: Richard Sharpe <realrichardsharpe at gmail.com>

commit 4ad426a7c6c9fffa41df5bcafd9f420c257b6805
Author: Jeremy Allison <jra at 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 <jra at samba.org>
    Reviewed-by: Richard Sharpe <realrichardsharpe at gmail.com>

commit fc92d451cf3162807e2493c62fa7617863adf2ba
Author: Jeremy Allison <jra at 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 <jra at samba.org>
    Reviewed-by: Richard Sharpe <realrichardsharpe at gmail.com>

commit 0da76414fdc6a0aacea6282a76b384a702615408
Author: Jeremy Allison <jra at 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 <jra at samba.org>
    Reviewed-by: Richard Sharpe <realrichardsharpe at gmail.com>

commit 0037815453fa6141d3c0325c3ab197326324ab53
Author: Jeremy Allison <jra at 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 <jra at samba.org>
    Reviewed-by: Richard Sharpe <realrichardsharpe at gmail.com>

commit 730de8e091879a53493a0c96b542603cd52174a2
Author: Jeremy Allison <jra at 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 <jra at samba.org>
    Reviewed-by: Richard Sharpe <realrichardsharpe at gmail.com>

commit c3d45216dd7df2a084b7d1af63f207db0c87b53d
Author: Jeremy Allison <jra at 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 <jra at samba.org>
    Reviewed-by: Richard Sharpe <realrichardsharpe at gmail.com>

commit fed54ca01d4dc7796edb9ab337b3529416ce1424
Author: Jeremy Allison <jra at 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 <jra at samba.org>
    Reviewed-by: Richard Sharpe <realrichardsharpe at 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



More information about the samba-cvs mailing list