cifs: Check server capability before attempting silly rename
cifs_rename_pending_delete() attempts to silly rename file using CIFSSMBRenameOpenFile(). This uses the SET_FILE_INFORMATION TRANS2 command with information level set to the passthru info-level SMB_SET_FILE_RENAME_INFORMATION. We need to check to make sure that the server support passthru info-levels before attempting the silly rename or else we will fail to rename the file. Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
72d282dc51
commit
c483a9841d
1 changed files with 9 additions and 0 deletions
|
@ -995,6 +995,15 @@ cifs_rename_pending_delete(const char *full_path, struct dentry *dentry,
|
||||||
return PTR_ERR(tlink);
|
return PTR_ERR(tlink);
|
||||||
tcon = tlink_tcon(tlink);
|
tcon = tlink_tcon(tlink);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We cannot rename the file if the server doesn't support
|
||||||
|
* CAP_INFOLEVEL_PASSTHRU
|
||||||
|
*/
|
||||||
|
if (!(tcon->ses->capabilities & CAP_INFOLEVEL_PASSTHRU)) {
|
||||||
|
rc = -EBUSY;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
rc = CIFSSMBOpen(xid, tcon, full_path, FILE_OPEN,
|
rc = CIFSSMBOpen(xid, tcon, full_path, FILE_OPEN,
|
||||||
DELETE|FILE_WRITE_ATTRIBUTES, CREATE_NOT_DIR,
|
DELETE|FILE_WRITE_ATTRIBUTES, CREATE_NOT_DIR,
|
||||||
&netfid, &oplock, NULL, cifs_sb->local_nls,
|
&netfid, &oplock, NULL, cifs_sb->local_nls,
|
||||||
|
|
Loading…
Add table
Reference in a new issue