[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