UBIFS: double check that buds are replied in order
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Fri, 13 May 2011 13:02:19 +0000 (16:02 +0300)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Mon, 16 May 2011 07:31:40 +0000 (10:31 +0300)
Commit 52c6e6f990669deac3f370f1603815adb55a1dbd provides misleading infomation
in the commit messages - buds are replied in order. And the real reason why
that fix helped is probably because it made sure we seek head even in read-only
mode (so deferred recovery will have seeked heads).

This patch adds an assertion which will fire if we reply buds out of order.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
fs/ubifs/replay.c

index e27346f6c67c30db9cbdc7ef8b5a4b1ce57b5640..5e815034aabdc9aee42316e148afc5275578b376 100644 (file)
@@ -713,6 +713,7 @@ static int replay_buds(struct ubifs_info *c)
 {
        struct bud_entry *b;
        int err, uninitialized_var(free), uninitialized_var(dirty);
+       unsigned long long prev_sqnum = 0;
 
        list_for_each_entry(b, &c->replay_buds, list) {
                err = replay_bud(c, b->bud->lnum, b->bud->start, b->bud->jhead,
@@ -723,6 +724,9 @@ static int replay_buds(struct ubifs_info *c)
                                      free, dirty, b->bud->jhead);
                if (err)
                        return err;
+
+               ubifs_assert(b->sqnum > prev_sqnum);
+               prev_sqnum = b->sqnum;
        }
 
        return 0;