@@ -2718,6 +2718,7 @@ static long smb3_simple_falloc(struct file *file, struct cifs_tcon *tcon,
struct cifsFileInfo *cfile = file->private_data;
long rc = -EOPNOTSUPP;
unsigned int xid;
+ __le64 eof;
xid = get_xid();
@@ -2747,9 +2748,12 @@ static long smb3_simple_falloc(struct file *file, struct cifs_tcon *tcon,
else if (i_size_read(inode) >= off + len)
/* not extending file and already not sparse */
rc = 0;
- /* BB: in future add else clause to extend file */
- else
- rc = -EOPNOTSUPP;
+ else {
+ eof = cpu_to_le64(off + len);
+ rc = SMB2_set_eof(xid, tcon, cfile->fid.persistent_fid,
+ cfile->fid.volatile_fid,
+ cfile->pid, &eof);
+ }
if (rc)
trace_smb3_falloc_err(xid, cfile->fid.persistent_fid,
tcon->tid, tcon->ses->Suid, off, len, rc);
Add support for the case when fallocate(mode==0) and we need to extend a non-sparse file. Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com> --- fs/cifs/smb2ops.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)