mirror of https://gitee.com/openkylin/linux.git
cifs: copy_file_range needs to strip setuid bits and update timestamps
cifs has both source and destination inodes locked throughout the copy. Like ->write_iter(), we update mtime and strip setuid bits of destination file before copy and like ->read_iter(), we update atime of source file after copy. Signed-off-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
7e5a70ad88
commit
bf3c90ee1e
|
@ -1104,6 +1104,10 @@ ssize_t cifs_file_copychunk_range(unsigned int xid,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rc = -EOPNOTSUPP;
|
||||||
|
if (!target_tcon->ses->server->ops->copychunk_range)
|
||||||
|
goto out;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note: cifs case is easier than btrfs since server responsible for
|
* Note: cifs case is easier than btrfs since server responsible for
|
||||||
* checks for proper open modes and file type and if it wants
|
* checks for proper open modes and file type and if it wants
|
||||||
|
@ -1115,11 +1119,12 @@ ssize_t cifs_file_copychunk_range(unsigned int xid,
|
||||||
/* should we flush first and last page first */
|
/* should we flush first and last page first */
|
||||||
truncate_inode_pages(&target_inode->i_data, 0);
|
truncate_inode_pages(&target_inode->i_data, 0);
|
||||||
|
|
||||||
if (target_tcon->ses->server->ops->copychunk_range)
|
rc = file_modified(dst_file);
|
||||||
|
if (!rc)
|
||||||
rc = target_tcon->ses->server->ops->copychunk_range(xid,
|
rc = target_tcon->ses->server->ops->copychunk_range(xid,
|
||||||
smb_file_src, smb_file_target, off, len, destoff);
|
smb_file_src, smb_file_target, off, len, destoff);
|
||||||
else
|
|
||||||
rc = -EOPNOTSUPP;
|
file_accessed(src_file);
|
||||||
|
|
||||||
/* force revalidate of size and timestamps of target file now
|
/* force revalidate of size and timestamps of target file now
|
||||||
* that target is updated on the server
|
* that target is updated on the server
|
||||||
|
|
Loading…
Reference in New Issue