UBIFS: switch to RO mode after synchronizing
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Wed, 4 Aug 2010 07:14:47 +0000 (10:14 +0300)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Mon, 30 Aug 2010 07:19:06 +0000 (10:19 +0300)
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>
fs/ubifs/gc.c

index 918d1582ca05ce4a43f884b75fbf5e2522156275..f89a422ca395c02f0053e58df3488264d4bb05b3 100644 (file)
@@ -774,8 +774,8 @@ out_unlock:
 out:
        ubifs_assert(ret < 0);
        ubifs_assert(ret != -ENOSPC && ret != -EAGAIN);
-       ubifs_ro_mode(c, ret);
        ubifs_wbuf_sync_nolock(wbuf);
+       ubifs_ro_mode(c, ret);
        mutex_unlock(&wbuf->io_mutex);
        ubifs_return_leb(c, lp.lnum);
        return ret;