From: Erez Zadok Date: Sun, 25 Nov 2007 18:34:04 +0000 (-0500) Subject: Unionfs: update our inode size correctly upon partial write X-Git-Url: https://git.fsl.cs.sunysb.edu/?a=commitdiff_plain;h=f58291c3bc835397c4c226f48473e61e9a27e687;p=unionfs-lite.git Unionfs: update our inode size correctly upon partial write Signed-off-by: Erez Zadok --- diff --git a/fs/unionfs/mmap.c b/fs/unionfs/mmap.c index ea5ef3d5901..8c07eed40cb 100644 --- a/fs/unionfs/mmap.c +++ b/fs/unionfs/mmap.c @@ -250,7 +250,6 @@ static int unionfs_commit_write(struct file *file, struct page *page, int err = -ENOMEM; struct inode *inode, *lower_inode; struct file *lower_file = NULL; - loff_t pos; unsigned bytes = to - from; char *page_data = NULL; mm_segment_t old_fs; @@ -293,12 +292,8 @@ static int unionfs_commit_write(struct file *file, struct page *page, if (err < 0) goto out; - inode->i_blocks = lower_inode->i_blocks; - /* we may have to update i_size */ - pos = page_offset(page) + to; - if (pos > i_size_read(inode)) - i_size_write(inode, pos); - /* if vfs_write succeeded above, sync up our times */ + /* if vfs_write succeeded above, sync up our times/sizes */ + fsstack_copy_inode_size(inode, lower_inode); unionfs_copy_attr_times(inode); mark_inode_dirty_sync(inode);