[CIFS] report rename failure when target file is locked by Windows
Fixes Samba bugzilla bug # 4182 Rename by handle failures (retry after rename by path) were not being returned back. Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
4b952a9b08
commit
8e87d4dc15
@ -3,7 +3,9 @@ Version 1.46
|
|||||||
Support deep tree mounts. Better support OS/2, Win9x (DOS) time stamps.
|
Support deep tree mounts. Better support OS/2, Win9x (DOS) time stamps.
|
||||||
Allow null user to be specified on mount ("username="). Do not return
|
Allow null user to be specified on mount ("username="). Do not return
|
||||||
EINVAL on readdir when filldir fails due to overwritten blocksize
|
EINVAL on readdir when filldir fails due to overwritten blocksize
|
||||||
(fixes FC problem)
|
(fixes FC problem). Return error in rename 2nd attempt retry (ie report
|
||||||
|
if rename by handle also fails, after rename by path fails, we were
|
||||||
|
not reporting whether the retry worked or not).
|
||||||
|
|
||||||
Version 1.45
|
Version 1.45
|
||||||
------------
|
------------
|
||||||
|
@ -885,10 +885,14 @@ int cifs_rename(struct inode *source_inode, struct dentry *source_direntry,
|
|||||||
kmalloc(2 * sizeof(FILE_UNIX_BASIC_INFO), GFP_KERNEL);
|
kmalloc(2 * sizeof(FILE_UNIX_BASIC_INFO), GFP_KERNEL);
|
||||||
if (info_buf_source != NULL) {
|
if (info_buf_source != NULL) {
|
||||||
info_buf_target = info_buf_source + 1;
|
info_buf_target = info_buf_source + 1;
|
||||||
rc = CIFSSMBUnixQPathInfo(xid, pTcon, fromName,
|
if (pTcon->ses->capabilities & CAP_UNIX)
|
||||||
info_buf_source, cifs_sb_source->local_nls,
|
rc = CIFSSMBUnixQPathInfo(xid, pTcon, fromName,
|
||||||
cifs_sb_source->mnt_cifs_flags &
|
info_buf_source,
|
||||||
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
cifs_sb_source->local_nls,
|
||||||
|
cifs_sb_source->mnt_cifs_flags &
|
||||||
|
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
||||||
|
/* else rc is still EEXIST so will fall through to
|
||||||
|
unlink the target and retry rename */
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
rc = CIFSSMBUnixQPathInfo(xid, pTcon, toName,
|
rc = CIFSSMBUnixQPathInfo(xid, pTcon, toName,
|
||||||
info_buf_target,
|
info_buf_target,
|
||||||
@ -937,7 +941,7 @@ int cifs_rename(struct inode *source_inode, struct dentry *source_direntry,
|
|||||||
cifs_sb_source->mnt_cifs_flags &
|
cifs_sb_source->mnt_cifs_flags &
|
||||||
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
||||||
if (rc==0) {
|
if (rc==0) {
|
||||||
CIFSSMBRenameOpenFile(xid, pTcon, netfid, toName,
|
rc = CIFSSMBRenameOpenFile(xid, pTcon, netfid, toName,
|
||||||
cifs_sb_source->local_nls,
|
cifs_sb_source->local_nls,
|
||||||
cifs_sb_source->mnt_cifs_flags &
|
cifs_sb_source->mnt_cifs_flags &
|
||||||
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
||||||
|
Loading…
Reference in New Issue
Block a user