forked from luck/tmp_suning_uos_patched
Add worker function to set allocation size
Adds setinfo worker function for SMB2/SMB3 support of SET_ALLOCATION_INFORMATION Signed-off-by: Steve French <smfrench@gmail.com> Reviewed-by: Pavel Shilovsky <pshilovsky@samba.org>
This commit is contained in:
parent
59b04c5df7
commit
f29ebb47d5
|
@ -91,7 +91,7 @@ smb2_open_op_close(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
case SMB2_OP_SET_EOF:
|
||||
tmprc = SMB2_set_eof(xid, tcon, fid.persistent_fid,
|
||||
fid.volatile_fid, current->tgid,
|
||||
(__le64 *)data);
|
||||
(__le64 *)data, false);
|
||||
break;
|
||||
case SMB2_OP_SET_INFO:
|
||||
tmprc = SMB2_set_info(xid, tcon, fid.persistent_fid,
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/vfs.h>
|
||||
#include <linux/falloc.h>
|
||||
#include "cifsglob.h"
|
||||
#include "smb2pdu.h"
|
||||
#include "smb2proto.h"
|
||||
|
@ -736,7 +737,7 @@ smb2_set_file_size(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
{
|
||||
__le64 eof = cpu_to_le64(size);
|
||||
return SMB2_set_eof(xid, tcon, cfile->fid.persistent_fid,
|
||||
cfile->fid.volatile_fid, cfile->pid, &eof);
|
||||
cfile->fid.volatile_fid, cfile->pid, &eof, false);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
@ -2361,7 +2361,7 @@ SMB2_set_hardlink(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
|
||||
int
|
||||
SMB2_set_eof(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
||||
u64 volatile_fid, u32 pid, __le64 *eof)
|
||||
u64 volatile_fid, u32 pid, __le64 *eof, bool is_falloc)
|
||||
{
|
||||
struct smb2_file_eof_info info;
|
||||
void *data;
|
||||
|
@ -2372,8 +2372,12 @@ SMB2_set_eof(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
|||
data = &info;
|
||||
size = sizeof(struct smb2_file_eof_info);
|
||||
|
||||
return send_set_info(xid, tcon, persistent_fid, volatile_fid, pid,
|
||||
FILE_END_OF_FILE_INFORMATION, 1, &data, &size);
|
||||
if (is_falloc)
|
||||
return send_set_info(xid, tcon, persistent_fid, volatile_fid,
|
||||
pid, FILE_ALLOCATION_INFORMATION, 1, &data, &size);
|
||||
else
|
||||
return send_set_info(xid, tcon, persistent_fid, volatile_fid,
|
||||
pid, FILE_END_OF_FILE_INFORMATION, 1, &data, &size);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -139,7 +139,7 @@ extern int SMB2_set_hardlink(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
__le16 *target_file);
|
||||
extern int SMB2_set_eof(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
u64 persistent_fid, u64 volatile_fid, u32 pid,
|
||||
__le64 *eof);
|
||||
__le64 *eof, bool is_fallocate);
|
||||
extern int SMB2_set_info(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
u64 persistent_fid, u64 volatile_fid,
|
||||
FILE_BASIC_INFO *buf);
|
||||
|
|
Loading…
Reference in New Issue
Block a user