diff options
| -rw-r--r-- | fs/9p/vfs_addr.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c index adaf6f6dd858..e1cbdfdb7c68 100644 --- a/fs/9p/vfs_addr.c +++ b/fs/9p/vfs_addr.c @@ -310,9 +310,13 @@ static int v9fs_write_end(struct file *filp, struct address_space *mapping,  	p9_debug(P9_DEBUG_VFS, "filp %p, mapping %p\n", filp, mapping); -	if (unlikely(copied < len && !PageUptodate(page))) { -		copied = 0; -		goto out; +	if (!PageUptodate(page)) { +		if (unlikely(copied < len)) { +			copied = 0; +			goto out; +		} else if (len == PAGE_SIZE) { +			SetPageUptodate(page); +		}  	}  	/*  	 * No need to use i_size_read() here, the i_size | 
