Patchwork [GIT,PULL] UBIFS fix for 3.6-rc8

login
register
mail settings
Submitter Artem Bityutskiy
Date July 20, 2012, 7:23 a.m.
Message ID <1342769037.4060.18.camel@sauron.fi.intel.com>
Download mbox | patch
Permalink /patch/172148/
State Accepted
Headers show

Pull-request

git://git.infradead.org/linux-ubifs.git tags/upstream-3.5-rc8

Comments

Artem Bityutskiy - July 20, 2012, 7:23 a.m.
The following changes since commit bd0a521e88aa7a06ae7aabaed7ae196ed4ad867a:

  Linux 3.5-rc6 (2012-07-07 17:23:56 -0700)

are available in the git repository at:

  git://git.infradead.org/linux-ubifs.git tags/upstream-3.5-rc8

for you to fetch changes up to c6727932cfdb13501108b16c38463c09d5ec7a74:

  UBIFS: fix a bug in empty space fix-up (2012-07-20 10:13:27 +0300)

----------------------------------------------------------------
Fix a bug in UBIFS free space fix-up reported already twice recently:

http://lists.infradead.org/pipermail/linux-mtd/2012-May/041408.html
http://lists.infradead.org/pipermail/linux-mtd/2012-June/042422.html

and we finally have the fix. I am quite confident the fix is correct
because I could reproduce the problem with nandsim and verify the
fix. It was also verified by Iwo (the reporter).

I am also confident that this is OK to merge the fix so late because
this patch affects only the fixup functionality, which is not used by
most users.

----------------------------------------------------------------
Artem Bityutskiy (1):
      UBIFS: fix a bug in empty space fix-up

 fs/ubifs/sb.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Patch

diff --git a/fs/ubifs/sb.c b/fs/ubifs/sb.c
index ef3d1ba..15e2fc5 100644
--- a/fs/ubifs/sb.c
+++ b/fs/ubifs/sb.c
@@ -718,8 +718,12 @@  static int fixup_free_space(struct ubifs_info *c)
                lnum = ubifs_next_log_lnum(c, lnum);
        }
 
-       /* Fixup the current log head */
-       err = fixup_leb(c, c->lhead_lnum, c->lhead_offs);
+       /*
+        * Fixup the log head which contains the only a CS node at the
+        * beginning.
+        */
+       err = fixup_leb(c, c->lhead_lnum,
+                       ALIGN(UBIFS_CS_NODE_SZ, c->min_io_size));
        if (err)
                goto out;