CIFS: Make SMB2_open use cifs_open_parms struct
to prepare it for further durable handle reconnect processing. Signed-off-by: Pavel Shilovsky <pshilovsky@samba.org> Signed-off-by: Steven French <steven@steven-GA-970A-DS3.(none)>
This commit is contained in:

committed by
Steve French

parent
226730b4d8
commit
064f6047a1
@@ -44,17 +44,22 @@ smb2_open_op_close(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
__u32 create_options, void *data, int command)
|
||||
{
|
||||
int rc, tmprc = 0;
|
||||
u64 persistent_fid, volatile_fid;
|
||||
__le16 *utf16_path;
|
||||
__u8 oplock = SMB2_OPLOCK_LEVEL_NONE;
|
||||
struct cifs_open_parms oparms;
|
||||
struct cifs_fid fid;
|
||||
|
||||
utf16_path = cifs_convert_path_to_utf16(full_path, cifs_sb);
|
||||
if (!utf16_path)
|
||||
return -ENOMEM;
|
||||
|
||||
rc = SMB2_open(xid, tcon, utf16_path, &persistent_fid, &volatile_fid,
|
||||
desired_access, create_disposition, create_options,
|
||||
&oplock, NULL);
|
||||
oparms.tcon = tcon;
|
||||
oparms.desired_access = desired_access;
|
||||
oparms.disposition = create_disposition;
|
||||
oparms.create_options = create_options;
|
||||
oparms.fid = &fid;
|
||||
|
||||
rc = SMB2_open(xid, &oparms, utf16_path, &oplock, NULL);
|
||||
if (rc) {
|
||||
kfree(utf16_path);
|
||||
return rc;
|
||||
@@ -64,8 +69,8 @@ smb2_open_op_close(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
case SMB2_OP_DELETE:
|
||||
break;
|
||||
case SMB2_OP_QUERY_INFO:
|
||||
tmprc = SMB2_query_info(xid, tcon, persistent_fid,
|
||||
volatile_fid,
|
||||
tmprc = SMB2_query_info(xid, tcon, fid.persistent_fid,
|
||||
fid.volatile_fid,
|
||||
(struct smb2_file_all_info *)data);
|
||||
break;
|
||||
case SMB2_OP_MKDIR:
|
||||
@@ -75,19 +80,21 @@ smb2_open_op_close(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
*/
|
||||
break;
|
||||
case SMB2_OP_RENAME:
|
||||
tmprc = SMB2_rename(xid, tcon, persistent_fid, volatile_fid,
|
||||
(__le16 *)data);
|
||||
tmprc = SMB2_rename(xid, tcon, fid.persistent_fid,
|
||||
fid.volatile_fid, (__le16 *)data);
|
||||
break;
|
||||
case SMB2_OP_HARDLINK:
|
||||
tmprc = SMB2_set_hardlink(xid, tcon, persistent_fid,
|
||||
volatile_fid, (__le16 *)data);
|
||||
tmprc = SMB2_set_hardlink(xid, tcon, fid.persistent_fid,
|
||||
fid.volatile_fid, (__le16 *)data);
|
||||
break;
|
||||
case SMB2_OP_SET_EOF:
|
||||
tmprc = SMB2_set_eof(xid, tcon, persistent_fid, volatile_fid,
|
||||
current->tgid, (__le64 *)data);
|
||||
tmprc = SMB2_set_eof(xid, tcon, fid.persistent_fid,
|
||||
fid.volatile_fid, current->tgid,
|
||||
(__le64 *)data);
|
||||
break;
|
||||
case SMB2_OP_SET_INFO:
|
||||
tmprc = SMB2_set_info(xid, tcon, persistent_fid, volatile_fid,
|
||||
tmprc = SMB2_set_info(xid, tcon, fid.persistent_fid,
|
||||
fid.volatile_fid,
|
||||
(FILE_BASIC_INFO *)data);
|
||||
break;
|
||||
default:
|
||||
@@ -95,7 +102,7 @@ smb2_open_op_close(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
break;
|
||||
}
|
||||
|
||||
rc = SMB2_close(xid, tcon, persistent_fid, volatile_fid);
|
||||
rc = SMB2_close(xid, tcon, fid.persistent_fid, fid.volatile_fid);
|
||||
if (tmprc)
|
||||
rc = tmprc;
|
||||
kfree(utf16_path);
|
||||
|
Reference in New Issue
Block a user