summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source3/modules/gpfs.c20
-rw-r--r--source3/modules/vfs_gpfs.h2
2 files changed, 15 insertions, 7 deletions
diff --git a/source3/modules/gpfs.c b/source3/modules/gpfs.c
index b90d42292e..1659f5b32f 100644
--- a/source3/modules/gpfs.c
+++ b/source3/modules/gpfs.c
@@ -189,6 +189,17 @@ int gpfswrap_lib_init(int flags)
return gpfs_lib_init_fn(flags);
}
+int gpfswrap_set_times_path(char *pathname, int flags,
+ gpfs_timestruc_t times[4])
+{
+ if (gpfs_set_times_path_fn == NULL) {
+ errno = ENOSYS;
+ return -1;
+ }
+
+ return gpfs_set_times_path_fn(pathname, flags, times);
+}
+
bool set_gpfs_sharemode(files_struct *fsp, uint32 access_mask,
uint32 share_access)
{
@@ -350,11 +361,6 @@ int smbd_gpfs_set_times_path(char *path, struct smb_file_time *ft)
int flags = 0;
int rc;
- if (!gpfs_set_times_path_fn) {
- errno = ENOSYS;
- return -1;
- }
-
ZERO_ARRAY(gpfs_times);
timespec_to_gpfs_time(ft->atime, gpfs_times, 0, &flags);
timespec_to_gpfs_time(ft->mtime, gpfs_times, 1, &flags);
@@ -366,9 +372,9 @@ int smbd_gpfs_set_times_path(char *path, struct smb_file_time *ft)
return 0;
}
- rc = gpfs_set_times_path_fn(path, flags, gpfs_times);
+ rc = gpfswrap_set_times_path(path, flags, gpfs_times);
- if (rc != 0) {
+ if (rc != 0 && errno != ENOSYS) {
DEBUG(1,("gpfs_set_times() returned with error %s\n",
strerror(errno)));
}
diff --git a/source3/modules/vfs_gpfs.h b/source3/modules/vfs_gpfs.h
index 9d7ed542f3..d56b80867b 100644
--- a/source3/modules/vfs_gpfs.h
+++ b/source3/modules/vfs_gpfs.h
@@ -40,6 +40,8 @@ int gpfswrap_get_winattrs(int fd, struct gpfs_winattr *attrs);
int gpfswrap_prealloc(int fd, gpfs_off64_t start, gpfs_off64_t bytes);
int gpfswrap_ftruncate(int fd, gpfs_off64_t length);
int gpfswrap_lib_init(int flags);
+int gpfswrap_set_times_path(char *pathname, int flags,
+ gpfs_timestruc_t times[4]);
bool set_gpfs_sharemode(files_struct *fsp, uint32 access_mask,
uint32 share_access);
int set_gpfs_lease(int fd, int leasetype);