files_struct *fsp, uid_t uid, gid_t gid)
{
int ret;
- glfs_fd_t *glfd = NULL;
START_PROFILE(syscall_fchown);
- glfd = vfs_gluster_fetch_glfd(handle, fsp);
- if (glfd == NULL) {
- END_PROFILE(syscall_fchown);
- DBG_ERR("Failed to fetch gluster fd\n");
- return -1;
+ if (!fsp->fsp_flags.is_pathref) {
+ glfs_fd_t *glfd = vfs_gluster_fetch_glfd(handle, fsp);
+ if (glfd == NULL) {
+ END_PROFILE(syscall_fchown);
+ DBG_ERR("Failed to fetch gluster fd\n");
+ return -1;
+ }
+
+ ret = glfs_fchown(glfd, uid, gid);
+ } else {
+ /*
+ * This is no longer a handle based call.
+ */
+ ret = glfs_chown(handle->data,
+ fsp->fsp_name->base_name,
+ uid,
+ gid);
}
- ret = glfs_fchown(glfd, uid, gid);
END_PROFILE(syscall_fchown);
return ret;