diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ubifs/super.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c index dae1c62156c6..7e1f3efdf632 100644 --- a/fs/ubifs/super.c +++ b/fs/ubifs/super.c | |||
@@ -418,6 +418,7 @@ static int ubifs_sync_fs(struct super_block *sb, int wait) | |||
418 | { | 418 | { |
419 | struct ubifs_info *c = sb->s_fs_info; | 419 | struct ubifs_info *c = sb->s_fs_info; |
420 | int i, ret = 0, err; | 420 | int i, ret = 0, err; |
421 | long long bud_bytes; | ||
421 | 422 | ||
422 | if (c->jheads) | 423 | if (c->jheads) |
423 | for (i = 0; i < c->jhead_cnt; i++) { | 424 | for (i = 0; i < c->jhead_cnt; i++) { |
@@ -425,6 +426,17 @@ static int ubifs_sync_fs(struct super_block *sb, int wait) | |||
425 | if (err && !ret) | 426 | if (err && !ret) |
426 | ret = err; | 427 | ret = err; |
427 | } | 428 | } |
429 | |||
430 | /* Commit the journal unless it has too few data */ | ||
431 | spin_lock(&c->buds_lock); | ||
432 | bud_bytes = c->bud_bytes; | ||
433 | spin_unlock(&c->buds_lock); | ||
434 | if (bud_bytes > c->leb_size) { | ||
435 | err = ubifs_run_commit(c); | ||
436 | if (err) | ||
437 | return err; | ||
438 | } | ||
439 | |||
428 | /* | 440 | /* |
429 | * We ought to call sync for c->ubi but it does not have one. If it had | 441 | * We ought to call sync for c->ubi but it does not have one. If it had |
430 | * it would in turn call mtd->sync, however mtd operations are | 442 | * it would in turn call mtd->sync, however mtd operations are |