UBIFS: simplify reply code a bit
authorArtem Bityutskiy <Artem.Bityutskiy@linux.intel.com>
Sat, 14 Jul 2012 17:52:58 +0000 (20:52 +0300)
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Fri, 20 Jul 2012 07:27:25 +0000 (10:27 +0300)
In the log reply code we assume that 'c->lhead_offs' is known and may be
non-zero, which is not the case because we do not store it in the master
node and have to find out by scanning on every mount. Knowing this fact
allows us to simplify the log scanning loop a bit and remove a couple
of unneeded local variables.

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

index 3a2da7e476e5c8e7b346a8c3aaca9a1454659ca8..eba46d4a76192c017846c4389addf2ebdcc2a78e 100644 (file)
@@ -1007,7 +1007,7 @@ out:
  */
 int ubifs_replay_journal(struct ubifs_info *c)
 {
-       int err, i, lnum, offs, free;
+       int err, lnum, free;
 
        BUILD_BUG_ON(UBIFS_TRUN_KEY > 5);
 
@@ -1025,25 +1025,17 @@ int ubifs_replay_journal(struct ubifs_info *c)
        dbg_mnt("start replaying the journal");
        c->replaying = 1;
        lnum = c->ltail_lnum = c->lhead_lnum;
-       offs = c->lhead_offs;
 
-       for (i = 0; i < c->log_lebs; i++, lnum++) {
-               if (lnum >= UBIFS_LOG_LNUM + c->log_lebs) {
-                       /*
-                        * The log is logically circular, we reached the last
-                        * LEB, switch to the first one.
-                        */
-                       lnum = UBIFS_LOG_LNUM;
-                       offs = 0;
-               }
-               err = replay_log_leb(c, lnum, offs, c->sbuf);
+       lnum = UBIFS_LOG_LNUM;
+       do {
+               err = replay_log_leb(c, lnum, 0, c->sbuf);
                if (err == 1)
                        /* We hit the end of the log */
                        break;
                if (err)
                        goto out;
-               offs = 0;
-       }
+               lnum = ubifs_next_log_lnum(c, lnum);
+       } while (lnum != UBIFS_LOG_LNUM);
 
        err = replay_buds(c);
        if (err)
This page took 0.028852 seconds and 5 git commands to generate.