The branch, v4-22-test has been updated
via f941348890b VERSION: Bump version up to Samba 4.22.0rc2...
via fc3005dbad5 VERSION: Disable GIT_SNAPSHOT for the Samba 4.22.0rc1
release.
via 5539768a3ac WHATSNEW: Up to Samba 4.22.0rc1.
via 8d398acbbb7 tevent: version 0.16.2
via 77229f73c20 talloc: version 2.4.3
via 70a8c7a89a6 tdb: version 1.4.13
via 8f27da18b57 vfs_gpfs: Remove one whitespace
via edfd45a8f8a gpfswrap: Remove unused gpfs_set_winattrs_path
via 35538c408ce gpfswrap: Remove unused gpfs_fstat_x
via dd4c331bd2e gpfswrap: Remove unused gpfs_stat_x wrapper
via 2f114d0d110 vfs_gpfs: Remove winattr calls from vfs_gpfs_fntimes
via fb8138275f9 vfs_gpfs: Set creation time from
vfs_gpfs_fset_dos_attributes
via d3543e0b77f vfs_gpfs: Simplify vfs_gpfs_fset_dos_attributes
via dd7cc4da0f3 vfs_gpfs: Use gpfs_get_winattrs instead of gpfs_fstat_x
via 4787c737ec0 vfs_gpfs: Remove pathref test
via d86986da399 vfs_gpfs: Remove gpfs_stat_x fallback
via 30b7181d0a4 librpc/ndr: apply some const to ndr_push_union_blob()
from 0a48167044b vfs_gpfs: add gpfs:clamp_invalid_times
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-22-test
- Log -----------------------------------------------------------------
commit f941348890b2662f87e8980e16b9ae9854a9cb7f
Author: Jule Anger <[email protected]>
Date: Thu Feb 6 13:40:26 2025 +0100
VERSION: Bump version up to Samba 4.22.0rc2...
and re-enable GIT_SNAPSHOT.
Signed-off-by: Jule Anger <[email protected]>
Signed-off-by: Stefan Metzmacher <[email protected]>
-----------------------------------------------------------------------
Summary of changes:
VERSION | 4 +-
WHATSNEW.txt | 2 +-
...oc-util-2.3.0.sigs => pytalloc-util-2.4.3.sigs} | 0
.../ABI/{talloc-2.3.5.sigs => talloc-2.4.3.sigs} | 0
lib/talloc/wscript | 2 +-
lib/tdb/ABI/{tdb-1.3.17.sigs => tdb-1.4.13.sigs} | 0
lib/tdb/wscript | 2 +-
.../ABI/{tevent-0.15.0.sigs => tevent-0.16.2.sigs} | 0
lib/tevent/wscript | 2 +-
lib/util/gpfswrap.c | 44 ----
lib/util/gpfswrap.h | 7 -
librpc/ABI/ndr-6.0.0.sigs | 2 +-
librpc/ndr/libndr.h | 2 +-
librpc/ndr/ndr.c | 2 +-
source3/modules/vfs_gpfs.c | 260 ++++-----------------
15 files changed, 57 insertions(+), 272 deletions(-)
copy lib/talloc/ABI/{pytalloc-util-2.3.0.sigs => pytalloc-util-2.4.3.sigs}
(100%)
copy lib/talloc/ABI/{talloc-2.3.5.sigs => talloc-2.4.3.sigs} (100%)
copy lib/tdb/ABI/{tdb-1.3.17.sigs => tdb-1.4.13.sigs} (100%)
copy lib/tevent/ABI/{tevent-0.15.0.sigs => tevent-0.16.2.sigs} (100%)
Changeset truncated at 500 lines:
diff --git a/VERSION b/VERSION
index a09bd14320e..9c853933a27 100644
--- a/VERSION
+++ b/VERSION
@@ -79,7 +79,7 @@ SAMBA_VERSION_BETA_RELEASE=
# e.g. SAMBA_VERSION_PRE_RELEASE=1 #
# -> "2.2.9pre1" #
########################################################
-SAMBA_VERSION_PRE_RELEASE=1
+SAMBA_VERSION_PRE_RELEASE=
########################################################
# For 'rc' releases the version will be #
@@ -89,7 +89,7 @@ SAMBA_VERSION_PRE_RELEASE=1
# e.g. SAMBA_VERSION_RC_RELEASE=1 #
# -> "3.0.0rc1" #
########################################################
-SAMBA_VERSION_RC_RELEASE=
+SAMBA_VERSION_RC_RELEASE=2
########################################################
# To mark SVN snapshots this should be set to 'yes' #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 9a056da4810..76aecf200cd 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,7 +1,7 @@
Release Announcements
=====================
-This is the first pre release of Samba 4.22. This is *not*
+This is the first release candidate of Samba 4.22. This is *not*
intended for production environments and is designed for testing
purposes only. Please report any defects via the Samba bug reporting
system at https://bugzilla.samba.org/.
diff --git a/lib/talloc/ABI/pytalloc-util-2.3.0.sigs
b/lib/talloc/ABI/pytalloc-util-2.4.3.sigs
similarity index 100%
copy from lib/talloc/ABI/pytalloc-util-2.3.0.sigs
copy to lib/talloc/ABI/pytalloc-util-2.4.3.sigs
diff --git a/lib/talloc/ABI/talloc-2.3.5.sigs b/lib/talloc/ABI/talloc-2.4.3.sigs
similarity index 100%
copy from lib/talloc/ABI/talloc-2.3.5.sigs
copy to lib/talloc/ABI/talloc-2.4.3.sigs
diff --git a/lib/talloc/wscript b/lib/talloc/wscript
index 1b240ae3653..b4b89ec1993 100644
--- a/lib/talloc/wscript
+++ b/lib/talloc/wscript
@@ -1,7 +1,7 @@
#!/usr/bin/env python
APPNAME = 'talloc'
-VERSION = '2.4.2'
+VERSION = '2.4.3'
import os
import sys
diff --git a/lib/tdb/ABI/tdb-1.3.17.sigs b/lib/tdb/ABI/tdb-1.4.13.sigs
similarity index 100%
copy from lib/tdb/ABI/tdb-1.3.17.sigs
copy to lib/tdb/ABI/tdb-1.4.13.sigs
diff --git a/lib/tdb/wscript b/lib/tdb/wscript
index 812e5987daf..d647cb5da9a 100644
--- a/lib/tdb/wscript
+++ b/lib/tdb/wscript
@@ -1,7 +1,7 @@
#!/usr/bin/env python
APPNAME = 'tdb'
-VERSION = '1.4.12'
+VERSION = '1.4.13'
import sys, os
diff --git a/lib/tevent/ABI/tevent-0.15.0.sigs
b/lib/tevent/ABI/tevent-0.16.2.sigs
similarity index 100%
copy from lib/tevent/ABI/tevent-0.15.0.sigs
copy to lib/tevent/ABI/tevent-0.16.2.sigs
diff --git a/lib/tevent/wscript b/lib/tevent/wscript
index 8df1b40febf..317a0c5e0b5 100644
--- a/lib/tevent/wscript
+++ b/lib/tevent/wscript
@@ -1,7 +1,7 @@
#!/usr/bin/env python
APPNAME = 'tevent'
-VERSION = '0.16.1'
+VERSION = '0.16.2'
import sys, os
diff --git a/lib/util/gpfswrap.c b/lib/util/gpfswrap.c
index 2f15bf452cf..8012e29163c 100644
--- a/lib/util/gpfswrap.c
+++ b/lib/util/gpfswrap.c
@@ -29,9 +29,6 @@ static int (*gpfs_get_realfilename_path_fn)(const char
*pathname,
char *filenamep,
int *len);
static int (*gpfs_register_cifs_export_fn)(void);
-static int (*gpfs_set_winattrs_path_fn)(const char *pathname,
- int flags,
- struct gpfs_winattr *attrs);
static int (*gpfs_set_winattrs_fn)(int fd, int flags,
struct gpfs_winattr *attrs);
static int (*gpfs_get_winattrs_fn)(int fd, struct gpfs_winattr *attrs);
@@ -49,10 +46,6 @@ static int (*gpfs_init_trace_fn)(void);
static int (*gpfs_query_trace_fn)(void);
static void (*gpfs_add_trace_fn)(int level, const char *msg);
static void (*gpfs_fini_trace_fn)(void);
-static int (*gpfs_fstat_x_fn)(int fd, unsigned int *litemask,
- struct gpfs_iattr64 *iattr, size_t len);
-static int (*gpfs_stat_x_fn)(const char *pathname, unsigned int *litemask,
- struct gpfs_iattr64 *iattr, size_t len);
int gpfswrap_init(void)
{
@@ -73,7 +66,6 @@ int gpfswrap_init(void)
gpfs_putacl_fn = dlsym(l, "gpfs_putacl");
gpfs_get_realfilename_path_fn = dlsym(l, "gpfs_get_realfilename_path");
gpfs_register_cifs_export_fn = dlsym(l, "gpfs_register_cifs_export");
- gpfs_set_winattrs_path_fn = dlsym(l, "gpfs_set_winattrs_path");
gpfs_set_winattrs_fn = dlsym(l, "gpfs_set_winattrs");
gpfs_get_winattrs_fn = dlsym(l, "gpfs_get_winattrs");
gpfs_ftruncate_fn = dlsym(l, "gpfs_ftruncate");
@@ -85,8 +77,6 @@ int gpfswrap_init(void)
gpfs_query_trace_fn = dlsym(l, "gpfs_query_trace");
gpfs_add_trace_fn = dlsym(l, "gpfs_add_trace");
gpfs_fini_trace_fn = dlsym(l, "gpfs_fini_trace");
- gpfs_fstat_x_fn = dlsym(l, "gpfs_fstat_x");
- gpfs_stat_x_fn = dlsym(l, "gpfs_stat_x");
return 0;
}
@@ -153,18 +143,6 @@ int gpfswrap_register_cifs_export(void)
return gpfs_register_cifs_export_fn();
}
-int gpfswrap_set_winattrs_path(const char *pathname,
- int flags,
- struct gpfs_winattr *attrs)
-{
- if (gpfs_set_winattrs_path_fn == NULL) {
- errno = ENOSYS;
- return -1;
- }
-
- return gpfs_set_winattrs_path_fn(pathname, flags, attrs);
-}
-
int gpfswrap_set_winattrs(int fd, int flags, struct gpfs_winattr *attrs)
{
if (gpfs_set_winattrs_fn == NULL) {
@@ -272,25 +250,3 @@ void gpfswrap_fini_trace(void)
gpfs_fini_trace_fn();
}
-
-int gpfswrap_fstat_x(int fd, unsigned int *litemask,
- struct gpfs_iattr64 *iattr, size_t len)
-{
- if (gpfs_fstat_x_fn == NULL) {
- errno = ENOSYS;
- return -1;
- }
-
- return gpfs_fstat_x_fn(fd, litemask, iattr, len);
-}
-
-int gpfswrap_stat_x(const char *pathname, unsigned int *litemask,
- struct gpfs_iattr64 *iattr, size_t len)
-{
- if (gpfs_stat_x_fn == NULL) {
- errno = ENOSYS;
- return -1;
- }
-
- return gpfs_stat_x_fn(pathname, litemask, iattr, len);
-}
diff --git a/lib/util/gpfswrap.h b/lib/util/gpfswrap.h
index e387a56446b..c1d87b098c5 100644
--- a/lib/util/gpfswrap.h
+++ b/lib/util/gpfswrap.h
@@ -35,9 +35,6 @@ int gpfswrap_get_realfilename_path(const char *pathname,
char *filenamep,
int *len);
int gpfswrap_register_cifs_export(void);
-int gpfswrap_set_winattrs_path(const char *pathname,
- int flags,
- struct gpfs_winattr *attrs);
int gpfswrap_set_winattrs(int fd, int flags, struct gpfs_winattr *attrs);
int gpfswrap_get_winattrs(int fd, struct gpfs_winattr *attrs);
int gpfswrap_ftruncate(int fd, gpfs_off64_t length);
@@ -49,9 +46,5 @@ int gpfswrap_init_trace(void);
int gpfswrap_query_trace(void);
void gpfswrap_add_trace(int level, const char *msg);
void gpfswrap_fini_trace(void);
-int gpfswrap_fstat_x(int fd, unsigned int *litemask,
- struct gpfs_iattr64 *iattr, size_t len);
-int gpfswrap_stat_x(const char *pathname, unsigned int *litemask,
- struct gpfs_iattr64 *iattr, size_t len);
#endif
diff --git a/librpc/ABI/ndr-6.0.0.sigs b/librpc/ABI/ndr-6.0.0.sigs
index e68248f2016..0969af5db06 100644
--- a/librpc/ABI/ndr-6.0.0.sigs
+++ b/librpc/ABI/ndr-6.0.0.sigs
@@ -245,7 +245,7 @@ ndr_push_uint32: enum ndr_err_code (struct ndr_push *,
ndr_flags_type, uint32_t)
ndr_push_uint3264: enum ndr_err_code (struct ndr_push *, ndr_flags_type,
uint32_t)
ndr_push_uint8: enum ndr_err_code (struct ndr_push *, ndr_flags_type, uint8_t)
ndr_push_union_align: enum ndr_err_code (struct ndr_push *, size_t)
-ndr_push_union_blob: enum ndr_err_code (DATA_BLOB *, TALLOC_CTX *, void *,
uint32_t, ndr_push_flags_fn_t)
+ndr_push_union_blob: enum ndr_err_code (DATA_BLOB *, TALLOC_CTX *, const void
*, uint32_t, ndr_push_flags_fn_t)
ndr_push_unique_ptr: enum ndr_err_code (struct ndr_push *, const void *)
ndr_push_winreg_Data: enum ndr_err_code (struct ndr_push *, ndr_flags_type,
const union winreg_Data *)
ndr_push_winreg_Data_GPO: enum ndr_err_code (struct ndr_push *,
ndr_flags_type, const union winreg_Data_GPO *)
diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h
index 9f1d7ac9107..344f08b20a1 100644
--- a/librpc/ndr/libndr.h
+++ b/librpc/ndr/libndr.h
@@ -632,7 +632,7 @@ enum ndr_err_code ndr_push_struct_blob(DATA_BLOB *blob,
TALLOC_CTX *mem_ctx, con
enum ndr_err_code ndr_push_struct_into_fixed_blob(DATA_BLOB *blob,
const void *p,
ndr_push_flags_fn_t fn);
-enum ndr_err_code ndr_push_union_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx,
void *p, uint32_t level, ndr_push_flags_fn_t fn);
+enum ndr_err_code ndr_push_union_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx,
const void *p, uint32_t level, ndr_push_flags_fn_t fn);
size_t ndr_size_struct(const void *p, libndr_flags flags, ndr_push_flags_fn_t
push);
size_t ndr_size_union(const void *p, libndr_flags flags, uint32_t level,
ndr_push_flags_fn_t push);
uint32_t ndr_push_get_relative_base_offset(struct ndr_push *ndr);
diff --git a/librpc/ndr/ndr.c b/librpc/ndr/ndr.c
index c25e8bd1ca5..896f682d2c2 100644
--- a/librpc/ndr/ndr.c
+++ b/librpc/ndr/ndr.c
@@ -1668,7 +1668,7 @@ _PUBLIC_ enum ndr_err_code
ndr_push_struct_into_fixed_blob(
/*
push a union to a blob using NDR
*/
-_PUBLIC_ enum ndr_err_code ndr_push_union_blob(DATA_BLOB *blob, TALLOC_CTX
*mem_ctx, void *p,
+_PUBLIC_ enum ndr_err_code ndr_push_union_blob(DATA_BLOB *blob, TALLOC_CTX
*mem_ctx, const void *p,
uint32_t level, ndr_push_flags_fn_t fn)
{
struct ndr_push *ndr;
diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c
index fb3e8c806e1..48f3bbad363 100644
--- a/source3/modules/vfs_gpfs.c
+++ b/source3/modules/vfs_gpfs.c
@@ -56,9 +56,6 @@ struct gpfs_config_data {
bool settimes;
bool recalls;
bool clamp_invalid_times;
- struct {
- bool gpfs_fstat_x;
- } pathref_ok;
};
struct gpfs_fsp_extension {
@@ -527,7 +524,7 @@ again:
}
/* Tries to get nfs4 acls and returns SMB ACL allocated.
- * On failure returns 1 if it got non-NFSv4 ACL to prompt
+ * On failure returns 1 if it got non-NFSv4 ACL to prompt
* retry with POSIX ACL checks.
* On failure returns -1 if there is system (GPFS) error, check errno.
* Returns 0 on success
@@ -1436,21 +1433,12 @@ static unsigned int
vfs_gpfs_dosmode_to_winattrs(uint32_t dosmode)
return winattrs;
}
-static struct timespec gpfs_timestruc64_to_timespec(struct gpfs_timestruc64 g)
-{
- return (struct timespec) { .tv_sec = g.tv_sec, .tv_nsec = g.tv_nsec };
-}
-
static NTSTATUS vfs_gpfs_fget_dos_attributes(struct vfs_handle_struct *handle,
struct files_struct *fsp,
uint32_t *dosmode)
{
struct gpfs_config_data *config;
- int fd = fsp_get_pathref_fd(fsp);
- struct sys_proc_fd_path_buf buf;
- const char *p = NULL;
- struct gpfs_iattr64 iattr = { };
- unsigned int litemask = 0;
+ struct gpfs_winattr attrs = { };
struct timespec ts;
int ret;
@@ -1462,19 +1450,7 @@ static NTSTATUS vfs_gpfs_fget_dos_attributes(struct
vfs_handle_struct *handle,
return SMB_VFS_NEXT_FGET_DOS_ATTRIBUTES(handle, fsp, dosmode);
}
- if (fsp->fsp_flags.is_pathref && !config->pathref_ok.gpfs_fstat_x) {
- if (fsp->fsp_flags.have_proc_fds) {
- p = sys_proc_fd_path(fd, &buf);
- } else {
- p = fsp->fsp_name->base_name;
- }
- }
-
- if (p != NULL) {
- ret = gpfswrap_stat_x(p, &litemask, &iattr, sizeof(iattr));
- } else {
- ret = gpfswrap_fstat_x(fd, &litemask, &iattr, sizeof(iattr));
- }
+ ret = gpfswrap_get_winattrs(fsp_get_pathref_fd(fsp), &attrs);
if (ret == -1 && errno == ENOSYS) {
return SMB_VFS_NEXT_FGET_DOS_ATTRIBUTES(handle, fsp, dosmode);
}
@@ -1491,17 +1467,7 @@ static NTSTATUS vfs_gpfs_fget_dos_attributes(struct
vfs_handle_struct *handle,
set_effective_capability(DAC_OVERRIDE_CAPABILITY);
- if (p != NULL) {
- ret = gpfswrap_stat_x(p,
- &litemask,
- &iattr,
- sizeof(iattr));
- } else {
- ret = gpfswrap_fstat_x(fd,
- &litemask,
- &iattr,
- sizeof(iattr));
- }
+ ret = gpfswrap_get_winattrs(fsp_get_pathref_fd(fsp), &attrs);
if (ret == -1) {
saved_errno = errno;
}
@@ -1519,14 +1485,40 @@ static NTSTATUS vfs_gpfs_fget_dos_attributes(struct
vfs_handle_struct *handle,
return map_nt_error_from_unix(errno);
}
- ts = gpfs_timestruc64_to_timespec(iattr.ia_createtime);
+ ts.tv_sec = attrs.creationTime.tv_sec;
+ ts.tv_nsec = attrs.creationTime.tv_nsec;
- *dosmode |= vfs_gpfs_winattrs_to_dosmode(iattr.ia_winflags);
+ *dosmode |= vfs_gpfs_winattrs_to_dosmode(attrs.winAttrs);
update_stat_ex_create_time(&fsp->fsp_name->st, ts);
return NT_STATUS_OK;
}
+static int timespec_to_gpfs_timestruc(struct gpfs_config_data *config,
+ struct timespec ts,
+ struct gpfs_timestruc *gt)
+{
+ if (ts.tv_sec < 0 || ts.tv_sec > UINT32_MAX) {
+ if (!config->clamp_invalid_times) {
+ DBG_NOTICE("GPFS uses 32-bit unsigned timestamps "
+ "and cannot handle %jd.\n",
+ (intmax_t)ts.tv_sec);
+ errno = ERANGE;
+ return -1;
+ }
+ if (ts.tv_sec < 0) {
+ ts.tv_sec = 0;
+ } else {
+ ts.tv_sec = UINT32_MAX;
+ }
+ }
+
+ gt->tv_sec = ts.tv_sec;
+ gt->tv_nsec = ts.tv_nsec;
+
+ return 0;
+}
+
static NTSTATUS vfs_gpfs_fset_dos_attributes(struct vfs_handle_struct *handle,
struct files_struct *fsp,
uint32_t dosmode)
@@ -1543,43 +1535,19 @@ static NTSTATUS vfs_gpfs_fset_dos_attributes(struct
vfs_handle_struct *handle,
return SMB_VFS_NEXT_FSET_DOS_ATTRIBUTES(handle, fsp, dosmode);
}
- attrs.winAttrs = vfs_gpfs_dosmode_to_winattrs(dosmode);
-
- if (!fsp->fsp_flags.is_pathref) {
- ret = gpfswrap_set_winattrs(fsp_get_io_fd(fsp),
- GPFS_WINATTR_SET_ATTRS, &attrs);
- if (ret == -1) {
- DBG_WARNING("Setting winattrs failed for %s: %s\n",
- fsp_str_dbg(fsp), strerror(errno));
- return map_nt_error_from_unix(errno);
- }
- return NT_STATUS_OK;
+ ret = timespec_to_gpfs_timestruc(config,
+ fsp->fsp_name->st.st_ex_btime,
+ &attrs.creationTime);
+ if (ret == -1) {
+ return map_nt_error_from_unix(errno);
}
- if (fsp->fsp_flags.have_proc_fds) {
- int fd = fsp_get_pathref_fd(fsp);
- struct sys_proc_fd_path_buf buf;
-
- ret = gpfswrap_set_winattrs_path(sys_proc_fd_path(fd, &buf),
- GPFS_WINATTR_SET_ATTRS,
- &attrs);
- if (ret == -1) {
- DBG_WARNING("Setting winattrs failed for "
- "[%s][%s]: %s\n",
- buf.buf,
- fsp_str_dbg(fsp),
- strerror(errno));
- return map_nt_error_from_unix(errno);
- }
- return NT_STATUS_OK;
- }
+ attrs.winAttrs = vfs_gpfs_dosmode_to_winattrs(dosmode);
- /*
- * This is no longer a handle based call.
- */
- ret = gpfswrap_set_winattrs_path(fsp->fsp_name->base_name,
- GPFS_WINATTR_SET_ATTRS,
- &attrs);
+ ret = gpfswrap_set_winattrs(fsp_get_pathref_fd(fsp),
+ GPFS_WINATTR_SET_CREATION_TIME|
+ GPFS_WINATTR_SET_ATTRS,
+ &attrs);
if (ret == -1) {
DBG_WARNING("Setting winattrs failed for [%s]: %s\n",
fsp_str_dbg(fsp), strerror(errno));
@@ -1595,28 +1563,18 @@ static int timespec_to_gpfs_time(struct
gpfs_config_data *config,
int idx,
int *flags)
{
+ int ret;
+
if (is_omit_timespec(&ts)) {
return 0;
}
- if (ts.tv_sec < 0 || ts.tv_sec > UINT32_MAX) {
- if (!config->clamp_invalid_times) {
- DBG_NOTICE("GPFS uses 32-bit unsigned timestamps "
- "and cannot handle %jd.\n",
- (intmax_t)ts.tv_sec);
- errno = ERANGE;
- return -1;
- }
- if (ts.tv_sec < 0) {
- ts.tv_sec = 0;
- } else {
- ts.tv_sec = UINT32_MAX;
- }
+ ret = timespec_to_gpfs_timestruc(config, ts, >[idx]);
+ if (ret == -1) {
+ return ret;
}
*flags |= 1 << idx;
- gt[idx].tv_sec = ts.tv_sec;
- gt[idx].tv_nsec = ts.tv_nsec;
DBG_DEBUG("Setting GPFS time %d, flags 0x%x\n", idx, *flags);
return 0;
@@ -1701,7 +1659,6 @@ static int vfs_gpfs_fntimes(struct vfs_handle_struct
*handle,
struct smb_file_time *ft)
{
- struct gpfs_winattr attrs;
int ret;
struct gpfs_config_data *config;
@@ -1715,8 +1672,7 @@ static int vfs_gpfs_fntimes(struct vfs_handle_struct
*handle,
return smbd_gpfs_set_times(config, fsp, ft);
}
- DBG_DEBUG("gpfs_set_times() not available or disabled, "
- "use ntimes and winattr\n");
+ DBG_DEBUG("gpfs_set_times() not available or disabled.\n");
ret = SMB_VFS_NEXT_FNTIMES(handle, fsp, ft);
if (ret == -1) {
@@ -1728,56 +1684,6 @@ static int vfs_gpfs_fntimes(struct vfs_handle_struct
*handle,
return -1;
}
- if (is_omit_timespec(&ft->create_time)) {
- DBG_DEBUG("Create Time is NULL\n");
- return 0;
- }
-
- if (!config->winattr) {
- return 0;
- }
-
- attrs.winAttrs = 0;
- attrs.creationTime.tv_sec = ft->create_time.tv_sec;
- attrs.creationTime.tv_nsec = ft->create_time.tv_nsec;
-
- if (!fsp->fsp_flags.is_pathref) {
- ret = gpfswrap_set_winattrs(fsp_get_io_fd(fsp),
- GPFS_WINATTR_SET_CREATION_TIME,
- &attrs);
- if (ret == -1 && errno != ENOSYS) {
- DBG_WARNING("Set GPFS ntimes failed %d\n", ret);
- return -1;
- }
--
Samba Shared Repository