diff options
| -rw-r--r-- | fs/jffs2/file.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c index 023a17539dd4..f9c5dd6f4b64 100644 --- a/fs/jffs2/file.c +++ b/fs/jffs2/file.c | |||
| @@ -255,7 +255,7 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping, | |||
| 255 | _whole_ page. This helps to reduce the number of | 255 | _whole_ page. This helps to reduce the number of |
| 256 | nodes in files which have many short writes, like | 256 | nodes in files which have many short writes, like |
| 257 | syslog files. */ | 257 | syslog files. */ |
| 258 | start = aligned_start = 0; | 258 | aligned_start = 0; |
| 259 | } | 259 | } |
| 260 | 260 | ||
| 261 | ri = jffs2_alloc_raw_inode(); | 261 | ri = jffs2_alloc_raw_inode(); |
| @@ -291,14 +291,11 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping, | |||
| 291 | } | 291 | } |
| 292 | 292 | ||
| 293 | /* Adjust writtenlen for the padding we did, so we don't confuse our caller */ | 293 | /* Adjust writtenlen for the padding we did, so we don't confuse our caller */ |
| 294 | if (writtenlen < (start&3)) | 294 | writtenlen -= min(writtenlen, (start - aligned_start)); |
| 295 | writtenlen = 0; | ||
| 296 | else | ||
| 297 | writtenlen -= (start&3); | ||
| 298 | 295 | ||
| 299 | if (writtenlen) { | 296 | if (writtenlen) { |
| 300 | if (inode->i_size < (pg->index << PAGE_CACHE_SHIFT) + start + writtenlen) { | 297 | if (inode->i_size < pos + writtenlen) { |
| 301 | inode->i_size = (pg->index << PAGE_CACHE_SHIFT) + start + writtenlen; | 298 | inode->i_size = pos + writtenlen; |
| 302 | inode->i_blocks = (inode->i_size + 511) >> 9; | 299 | inode->i_blocks = (inode->i_size + 511) >> 9; |
| 303 | 300 | ||
| 304 | inode->i_ctime = inode->i_mtime = ITIME(je32_to_cpu(ri->ctime)); | 301 | inode->i_ctime = inode->i_mtime = ITIME(je32_to_cpu(ri->ctime)); |
