1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-25 17:57:42 +03:00

vfs_gpfs: deal with pathref fsps in vfs_gpfs_fntimes()

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14771

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Christof Schmitt <cs@samba.org>
This commit is contained in:
Ralph Boehme 2021-08-05 11:55:30 +02:00
parent 882a466ea5
commit 443608ee81

View File

@ -1792,9 +1792,43 @@ static int vfs_gpfs_fntimes(struct vfs_handle_struct *handle,
attrs.creationTime.tv_sec = ft->create_time.tv_sec;
attrs.creationTime.tv_nsec = ft->create_time.tv_nsec;
ret = gpfswrap_set_winattrs(fsp_get_io_fd(fsp),
GPFS_WINATTR_SET_CREATION_TIME,
&attrs);
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;
}
return ret;
}
if (fsp->fsp_flags.have_proc_fds) {
int fd = fsp_get_pathref_fd(fsp);
const char *p = NULL;
char buf[PATH_MAX];
p = sys_proc_fd_path(fd, buf, sizeof(buf));
if (p == NULL) {
return -1;
}
ret = gpfswrap_set_winattrs_path(p,
GPFS_WINATTR_SET_CREATION_TIME,
&attrs);
if (ret == -1 && errno != ENOSYS) {
DBG_WARNING("Set GPFS ntimes failed %d\n", ret);
return -1;
}
return ret;
}
/*
* This is no longer a handle based call.
*/
ret = gpfswrap_set_winattrs_path(fsp->fsp_name->base_name,
GPFS_WINATTR_SET_CREATION_TIME,
&attrs);
if (ret == -1 && errno != ENOSYS) {
DBG_WARNING("Set GPFS ntimes failed %d\n", ret);
return -1;