|
@@ -1985,6 +1985,10 @@ static int fuse_write_end(struct file *file, struct address_space *mapping,
|
|
|
{
|
|
|
struct inode *inode = page->mapping->host;
|
|
|
|
|
|
+ /* Haven't copied anything? Skip zeroing, size extending, dirtying. */
|
|
|
+ if (!copied)
|
|
|
+ goto unlock;
|
|
|
+
|
|
|
if (!PageUptodate(page)) {
|
|
|
/* Zero any unwritten bytes at the end of the page */
|
|
|
size_t endoff = (pos + copied) & ~PAGE_MASK;
|
|
@@ -1995,6 +1999,8 @@ static int fuse_write_end(struct file *file, struct address_space *mapping,
|
|
|
|
|
|
fuse_write_update_size(inode, pos + copied);
|
|
|
set_page_dirty(page);
|
|
|
+
|
|
|
+unlock:
|
|
|
unlock_page(page);
|
|
|
put_page(page);
|
|
|
|