UBIFS: do not allocate unneeded scan buffer
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Mon, 18 Oct 2010 07:00:40 +0000 (10:00 +0300)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Thu, 21 Oct 2010 08:15:19 +0000 (11:15 +0300)
In 'ubifs_replay_journal()' we allocate 'sbuf' for scanning the log.
However, we already have 'c->sbuf' for these purposes, so do not
allocate yet another one. This reduces UBIFS memory consumption while
recovering.

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

index 7df04ba4878e0ea703e1d9f663a512c97fde4a61..eed0fcff8d731710dc7723d25b1adb10ecbe6805 100644 (file)
@@ -1013,7 +1013,6 @@ out:
 int ubifs_replay_journal(struct ubifs_info *c)
 {
        int err, i, lnum, offs, free;
-       void *sbuf = NULL;
 
        BUILD_BUG_ON(UBIFS_TRUN_KEY > 5);
 
@@ -1028,10 +1027,6 @@ int ubifs_replay_journal(struct ubifs_info *c)
                return -EINVAL;
        }
 
-       sbuf = vmalloc(c->leb_size);
-       if (!sbuf)
-               return -ENOMEM;
-
        dbg_mnt("start replaying the journal");
        c->replaying = 1;
        lnum = c->ltail_lnum = c->lhead_lnum;
@@ -1046,7 +1041,7 @@ int ubifs_replay_journal(struct ubifs_info *c)
                        lnum = UBIFS_LOG_LNUM;
                        offs = 0;
                }
-               err = replay_log_leb(c, lnum, offs, sbuf);
+               err = replay_log_leb(c, lnum, offs, c->sbuf);
                if (err == 1)
                        /* We hit the end of the log */
                        break;
@@ -1079,7 +1074,6 @@ int ubifs_replay_journal(struct ubifs_info *c)
 out:
        destroy_replay_tree(c);
        destroy_bud_list(c);
-       vfree(sbuf);
        c->replaying = 0;
        return err;
 }