diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-04-12 16:54:43 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-04-12 16:54:43 -0400 |
| commit | a890b15c0990cc8d686edcc85f5fccde71ad5ce9 (patch) | |
| tree | 73162355b58283a2531f13fbbf663809f95c1483 /fs/ocfs2/file.c | |
| parent | 79fa1b677be3a985cc66b9218a4dd09818f1051b (diff) | |
| parent | 26ec634c31a11a003040e10b4d650495158632fd (diff) | |
Merge branch 'upstream'
Diffstat (limited to 'fs/ocfs2/file.c')
| -rw-r--r-- | fs/ocfs2/file.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 34e903a6a46b..581eb451a41a 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c | |||
| @@ -260,6 +260,17 @@ static int ocfs2_truncate_file(struct inode *inode, | |||
| 260 | if (new_i_size == le64_to_cpu(fe->i_size)) | 260 | if (new_i_size == le64_to_cpu(fe->i_size)) |
| 261 | goto bail; | 261 | goto bail; |
| 262 | 262 | ||
| 263 | /* This forces other nodes to sync and drop their pages. Do | ||
| 264 | * this even if we have a truncate without allocation change - | ||
| 265 | * ocfs2 cluster sizes can be much greater than page size, so | ||
| 266 | * we have to truncate them anyway. */ | ||
| 267 | status = ocfs2_data_lock(inode, 1); | ||
| 268 | if (status < 0) { | ||
| 269 | mlog_errno(status); | ||
| 270 | goto bail; | ||
| 271 | } | ||
| 272 | ocfs2_data_unlock(inode, 1); | ||
| 273 | |||
| 263 | if (le32_to_cpu(fe->i_clusters) == | 274 | if (le32_to_cpu(fe->i_clusters) == |
| 264 | ocfs2_clusters_for_bytes(osb->sb, new_i_size)) { | 275 | ocfs2_clusters_for_bytes(osb->sb, new_i_size)) { |
| 265 | mlog(0, "fe->i_clusters = %u, so we do a simple truncate\n", | 276 | mlog(0, "fe->i_clusters = %u, so we do a simple truncate\n", |
| @@ -272,14 +283,6 @@ static int ocfs2_truncate_file(struct inode *inode, | |||
| 272 | goto bail; | 283 | goto bail; |
| 273 | } | 284 | } |
| 274 | 285 | ||
| 275 | /* This forces other nodes to sync and drop their pages */ | ||
| 276 | status = ocfs2_data_lock(inode, 1); | ||
| 277 | if (status < 0) { | ||
| 278 | mlog_errno(status); | ||
| 279 | goto bail; | ||
| 280 | } | ||
| 281 | ocfs2_data_unlock(inode, 1); | ||
| 282 | |||
| 283 | /* alright, we're going to need to do a full blown alloc size | 286 | /* alright, we're going to need to do a full blown alloc size |
| 284 | * change. Orphan the inode so that recovery can complete the | 287 | * change. Orphan the inode so that recovery can complete the |
| 285 | * truncate if necessary. This does the task of marking | 288 | * truncate if necessary. This does the task of marking |
