cifs: change SMB2_OP_RENAME and SMB2_OP_HARDLINK to use compounding
Get rid of smb2_open_op_close() as all operations are now migrated to smb2_compound_op(). Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com> Signed-off-by: Steve French <stfrench@microsoft.com>
此提交包含在:
@@ -3859,70 +3859,6 @@ send_set_info(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
SMB2_rename(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
u64 persistent_fid, u64 volatile_fid, __le16 *target_file)
|
||||
{
|
||||
struct smb2_file_rename_info info;
|
||||
void **data;
|
||||
unsigned int size[2];
|
||||
int rc;
|
||||
int len = (2 * UniStrnlen((wchar_t *)target_file, PATH_MAX));
|
||||
|
||||
data = kmalloc_array(2, sizeof(void *), GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
info.ReplaceIfExists = 1; /* 1 = replace existing target with new */
|
||||
/* 0 = fail if target already exists */
|
||||
info.RootDirectory = 0; /* MBZ for network ops (why does spec say?) */
|
||||
info.FileNameLength = cpu_to_le32(len);
|
||||
|
||||
data[0] = &info;
|
||||
size[0] = sizeof(struct smb2_file_rename_info);
|
||||
|
||||
data[1] = target_file;
|
||||
size[1] = len + 2 /* null */;
|
||||
|
||||
rc = send_set_info(xid, tcon, persistent_fid, volatile_fid,
|
||||
current->tgid, FILE_RENAME_INFORMATION, SMB2_O_INFO_FILE,
|
||||
0, 2, data, size);
|
||||
kfree(data);
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
SMB2_set_hardlink(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
u64 persistent_fid, u64 volatile_fid, __le16 *target_file)
|
||||
{
|
||||
struct smb2_file_link_info info;
|
||||
void **data;
|
||||
unsigned int size[2];
|
||||
int rc;
|
||||
int len = (2 * UniStrnlen((wchar_t *)target_file, PATH_MAX));
|
||||
|
||||
data = kmalloc_array(2, sizeof(void *), GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
info.ReplaceIfExists = 0; /* 1 = replace existing link with new */
|
||||
/* 0 = fail if link already exists */
|
||||
info.RootDirectory = 0; /* MBZ for network ops (why does spec say?) */
|
||||
info.FileNameLength = cpu_to_le32(len);
|
||||
|
||||
data[0] = &info;
|
||||
size[0] = sizeof(struct smb2_file_link_info);
|
||||
|
||||
data[1] = target_file;
|
||||
size[1] = len + 2 /* null */;
|
||||
|
||||
rc = send_set_info(xid, tcon, persistent_fid, volatile_fid,
|
||||
current->tgid, FILE_LINK_INFORMATION, SMB2_O_INFO_FILE,
|
||||
0, 2, data, size);
|
||||
kfree(data);
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
SMB2_set_eof(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
||||
u64 volatile_fid, u32 pid, __le64 *eof)
|
||||
|
新增問題並參考
封鎖使用者