David Howells <dhowells@xxxxxxxxxx> writes: > @@ -3307,6 +3307,7 @@ static long smb3_zero_range(struct file *file, struct cifs_tcon *tcon, > struct inode *inode = file_inode(file); > struct cifsInodeInfo *cifsi = CIFS_I(inode); > struct cifsFileInfo *cfile = file->private_data; > + unsigned long long new_size; > long rc; > unsigned int xid; > __le64 eof; > @@ -3337,10 +3338,15 @@ static long smb3_zero_range(struct file *file, struct cifs_tcon *tcon, > /* > * do we also need to change the size of the file? > */ Perhaps remove the comment above as we're now updating the inode size? > - if (keep_size == false && i_size_read(inode) < offset + len) { > - eof = cpu_to_le64(offset + len); > + new_size = offset + len; > + if (keep_size == false && (unsigned long long)i_size_read(inode) < new_size) { > + eof = cpu_to_le64(new_size); > rc = SMB2_set_eof(xid, tcon, cfile->fid.persistent_fid, > cfile->fid.volatile_fid, cfile->pid, &eof); > + if (rc >= 0) { > + truncate_setsize(inode, new_size); > + fscache_resize_cookie(cifs_inode_cookie(inode), new_size); > + } > } > > zero_range_exit: Looks good, Acked-by: Paulo Alcantara (SUSE) <pc@xxxxxxxxxxxxx>