diff options
author | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2010-08-04 03:14:47 -0400 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2010-08-30 03:19:06 -0400 |
commit | 5ffef88ffeb730e1bf2da56a39a55e03d57a66c9 (patch) | |
tree | a524f5806930d593d1f38f29f6a3e28948f8e851 /fs/ubifs/gc.c | |
parent | 2bfc96a127bc1cc94d26bfaa40159966064f9c8c (diff) |
UBIFS: switch to RO mode after synchronizing
In 'ubifs_garbage_collect()' on error path, we first switch to R/O mode, and
then synchronize write-buffers (to make sure no data are lost). But the GC
write-buffer synchronization will fail, because we are already in R/O mode.
This patch re-orders this and makes sure we first synchronize the write-buffer,
and then switch to R/O mode.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'fs/ubifs/gc.c')
-rw-r--r-- | fs/ubifs/gc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ubifs/gc.c b/fs/ubifs/gc.c index 918d1582ca05..f89a422ca395 100644 --- a/fs/ubifs/gc.c +++ b/fs/ubifs/gc.c | |||
@@ -774,8 +774,8 @@ out_unlock: | |||
774 | out: | 774 | out: |
775 | ubifs_assert(ret < 0); | 775 | ubifs_assert(ret < 0); |
776 | ubifs_assert(ret != -ENOSPC && ret != -EAGAIN); | 776 | ubifs_assert(ret != -ENOSPC && ret != -EAGAIN); |
777 | ubifs_ro_mode(c, ret); | ||
778 | ubifs_wbuf_sync_nolock(wbuf); | 777 | ubifs_wbuf_sync_nolock(wbuf); |
778 | ubifs_ro_mode(c, ret); | ||
779 | mutex_unlock(&wbuf->io_mutex); | 779 | mutex_unlock(&wbuf->io_mutex); |
780 | ubifs_return_leb(c, lp.lnum); | 780 | ubifs_return_leb(c, lp.lnum); |
781 | return ret; | 781 | return ret; |