diff options
Diffstat (limited to 'fs/smb/client/file.c')
| -rw-r--r-- | fs/smb/client/file.c | 22 | 
1 files changed, 13 insertions, 9 deletions
diff --git a/fs/smb/client/file.c b/fs/smb/client/file.c index 3a213432775b..f391c9b803d8 100644 --- a/fs/smb/client/file.c +++ b/fs/smb/client/file.c @@ -87,7 +87,7 @@ void cifs_pages_written_back(struct inode *inode, loff_t start, unsigned int len  			continue;  		if (!folio_test_writeback(folio)) {  			WARN_ONCE(1, "bad %x @%llx page %lx %lx\n", -				  len, start, folio_index(folio), end); +				  len, start, folio->index, end);  			continue;  		} @@ -120,7 +120,7 @@ void cifs_pages_write_failed(struct inode *inode, loff_t start, unsigned int len  			continue;  		if (!folio_test_writeback(folio)) {  			WARN_ONCE(1, "bad %x @%llx page %lx %lx\n", -				  len, start, folio_index(folio), end); +				  len, start, folio->index, end);  			continue;  		} @@ -151,7 +151,7 @@ void cifs_pages_write_redirty(struct inode *inode, loff_t start, unsigned int le  	xas_for_each(&xas, folio, end) {  		if (!folio_test_writeback(folio)) {  			WARN_ONCE(1, "bad %x @%llx page %lx %lx\n", -				  len, start, folio_index(folio), end); +				  len, start, folio->index, end);  			continue;  		} @@ -175,6 +175,9 @@ cifs_mark_open_files_invalid(struct cifs_tcon *tcon)  	/* only send once per connect */  	spin_lock(&tcon->tc_lock); +	if (tcon->need_reconnect) +		tcon->status = TID_NEED_RECON; +  	if (tcon->status != TID_NEED_RECON) {  		spin_unlock(&tcon->tc_lock);  		return; @@ -2120,8 +2123,8 @@ cifs_update_eof(struct cifsInodeInfo *cifsi, loff_t offset,  {  	loff_t end_of_write = offset + bytes_written; -	if (end_of_write > cifsi->server_eof) -		cifsi->server_eof = end_of_write; +	if (end_of_write > cifsi->netfs.remote_i_size) +		netfs_resize_file(&cifsi->netfs, end_of_write, true);  }  static ssize_t @@ -2651,7 +2654,7 @@ static void cifs_extend_writeback(struct address_space *mapping,  				continue;  			if (xa_is_value(folio))  				break; -			if (folio_index(folio) != index) +			if (folio->index != index)  				break;  			if (!folio_try_get_rcu(folio)) {  				xas_reset(&xas); @@ -2899,7 +2902,7 @@ redo_folio:  					goto skip_write;  			} -			if (folio_mapping(folio) != mapping || +			if (folio->mapping != mapping ||  			    !folio_test_dirty(folio)) {  				start += folio_size(folio);  				folio_unlock(folio); @@ -3247,8 +3250,8 @@ cifs_uncached_writev_complete(struct work_struct *work)  	spin_lock(&inode->i_lock);  	cifs_update_eof(cifsi, wdata->offset, wdata->bytes); -	if (cifsi->server_eof > inode->i_size) -		i_size_write(inode, cifsi->server_eof); +	if (cifsi->netfs.remote_i_size > inode->i_size) +		i_size_write(inode, cifsi->netfs.remote_i_size);  	spin_unlock(&inode->i_lock);  	complete(&wdata->done); @@ -3300,6 +3303,7 @@ cifs_resend_wdata(struct cifs_writedata *wdata, struct list_head *wdata_list,  			if (wdata->cfile->invalidHandle)  				rc = -EAGAIN;  			else { +				wdata->replay = true;  #ifdef CONFIG_CIFS_SMB_DIRECT  				if (wdata->mr) {  					wdata->mr->need_invalidate = true;  | 
