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:
parent
882a466ea5
commit
443608ee81
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user