aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/jffs2/file.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c
index 9f4171213e58..3349db0a7863 100644
--- a/fs/jffs2/file.c
+++ b/fs/jffs2/file.c
@@ -215,12 +215,20 @@ static int jffs2_commit_write (struct file *filp, struct page *pg,
215 D1(printk(KERN_DEBUG "jffs2_commit_write(): ino #%lu, page at 0x%lx, range %d-%d, flags %lx\n", 215 D1(printk(KERN_DEBUG "jffs2_commit_write(): ino #%lu, page at 0x%lx, range %d-%d, flags %lx\n",
216 inode->i_ino, pg->index << PAGE_CACHE_SHIFT, start, end, pg->flags)); 216 inode->i_ino, pg->index << PAGE_CACHE_SHIFT, start, end, pg->flags));
217 217
218 if (!start && end == PAGE_CACHE_SIZE) { 218 if (end == PAGE_CACHE_SIZE) {
219 /* We need to avoid deadlock with page_cache_read() in 219 if (!start) {
220 jffs2_garbage_collect_pass(). So we have to mark the 220 /* We need to avoid deadlock with page_cache_read() in
221 page up to date, to prevent page_cache_read() from 221 jffs2_garbage_collect_pass(). So we have to mark the
222 trying to re-lock it. */ 222 page up to date, to prevent page_cache_read() from
223 SetPageUptodate(pg); 223 trying to re-lock it. */
224 SetPageUptodate(pg);
225 } else {
226 /* When writing out the end of a page, write out the
227 _whole_ page. This helps to reduce the number of
228 nodes in files which have many short writes, like
229 syslog files. */
230 start = aligned_start = 0;
231 }
224 } 232 }
225 233
226 ri = jffs2_alloc_raw_inode(); 234 ri = jffs2_alloc_raw_inode();