From dcfb82145049d85b6b859d906fa94cd2f0900091 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Tue, 17 Oct 2006 18:17:58 +0000 Subject: sync + update FAQ/Filesystems --- kernel/file.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'kernel/file.c') diff --git a/kernel/file.c b/kernel/file.c index 6f941ad..6cf71f3 100644 --- a/kernel/file.c +++ b/kernel/file.c @@ -495,11 +495,10 @@ static int fuse_commit_write(struct file *file, struct page *page, err = -EIO; if (!err) { pos += count; - if (pos > i_size_read(inode)) { - spin_lock(&fc->lock); + spin_lock(&fc->lock); + if (pos > inode->i_size) i_size_write(inode, pos); - spin_unlock(&fc->lock); - } + spin_unlock(&fc->lock); if (offset == 0 && to == PAGE_CACHE_SIZE) { clear_page_dirty(page); @@ -604,9 +603,10 @@ static ssize_t fuse_direct_io(struct file *file, const char __user *buf, } fuse_put_request(fc, req); if (res > 0) { - if (write && pos > i_size_read(inode)) { + if (write) { spin_lock(&fc->lock); - i_size_write(inode, pos); + if (pos > inode->i_size) + i_size_write(inode, pos); spin_unlock(&fc->lock); } *ppos = pos; -- cgit v1.2.3