diff options
author | Adrian Hunter <ext-adrian.hunter@nokia.com> | 2008-09-11 14:25:44 +0300 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2008-09-30 11:12:58 +0300 |
commit | bed79935de9a658678f44b88a097367d3b26429f (patch) | |
tree | 34f34c585f12d99dbb55131bc389a4894242d102 /fs/ubifs | |
parent | 403e12ab30ab160e1015bd998f0abc1865c574e0 (diff) | |
download | linux-bed79935de9a658678f44b88a097367d3b26429f.tar.gz linux-bed79935de9a658678f44b88a097367d3b26429f.tar.bz2 linux-bed79935de9a658678f44b88a097367d3b26429f.zip |
UBIFS: allow for sync_fs when read-only
sync_fs can be called even if the file system is mounted
read-only. Ensure the commit is not run in that case.
Reported-by: Zoltan Sogor <weth@inf.u-szeged.hu>
Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Diffstat (limited to 'fs/ubifs')
-rw-r--r-- | fs/ubifs/super.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c index 7e1f3efdf632..7fd759dde796 100644 --- a/fs/ubifs/super.c +++ b/fs/ubifs/super.c @@ -420,21 +420,22 @@ static int ubifs_sync_fs(struct super_block *sb, int wait) int i, ret = 0, err; long long bud_bytes; - if (c->jheads) + if (c->jheads) { for (i = 0; i < c->jhead_cnt; i++) { err = ubifs_wbuf_sync(&c->jheads[i].wbuf); if (err && !ret) ret = err; } - /* Commit the journal unless it has too few data */ - spin_lock(&c->buds_lock); - bud_bytes = c->bud_bytes; - spin_unlock(&c->buds_lock); - if (bud_bytes > c->leb_size) { - err = ubifs_run_commit(c); - if (err) - return err; + /* Commit the journal unless it has too little data */ + spin_lock(&c->buds_lock); + bud_bytes = c->bud_bytes; + spin_unlock(&c->buds_lock); + if (bud_bytes > c->leb_size) { + err = ubifs_run_commit(c); + if (err) + return err; + } } /* |