diff options
-rw-r--r-- | fs/jffs2/fs.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index e26ea78c7892..3f49562dc508 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c | |||
@@ -149,6 +149,7 @@ int jffs2_do_setattr (struct inode *inode, struct iattr *iattr) | |||
149 | if (ivalid & ATTR_SIZE && inode->i_size < iattr->ia_size) { | 149 | if (ivalid & ATTR_SIZE && inode->i_size < iattr->ia_size) { |
150 | jffs2_add_full_dnode_to_inode(c, f, new_metadata); | 150 | jffs2_add_full_dnode_to_inode(c, f, new_metadata); |
151 | inode->i_size = iattr->ia_size; | 151 | inode->i_size = iattr->ia_size; |
152 | inode->i_blocks = (inode->i_size + 511) >> 9; | ||
152 | f->metadata = NULL; | 153 | f->metadata = NULL; |
153 | } else { | 154 | } else { |
154 | f->metadata = new_metadata; | 155 | f->metadata = new_metadata; |
@@ -167,8 +168,10 @@ int jffs2_do_setattr (struct inode *inode, struct iattr *iattr) | |||
167 | We are protected from a simultaneous write() extending i_size | 168 | We are protected from a simultaneous write() extending i_size |
168 | back past iattr->ia_size, because do_truncate() holds the | 169 | back past iattr->ia_size, because do_truncate() holds the |
169 | generic inode semaphore. */ | 170 | generic inode semaphore. */ |
170 | if (ivalid & ATTR_SIZE && inode->i_size > iattr->ia_size) | 171 | if (ivalid & ATTR_SIZE && inode->i_size > iattr->ia_size) { |
171 | vmtruncate(inode, iattr->ia_size); | 172 | vmtruncate(inode, iattr->ia_size); |
173 | inode->i_blocks = (inode->i_size + 511) >> 9; | ||
174 | } | ||
172 | 175 | ||
173 | return 0; | 176 | return 0; |
174 | } | 177 | } |