summaryrefslogtreecommitdiffstats
path: root/fs/ubifs/super.c
diff options
context:
space:
mode:
authorSheng Yong <shengyong1@huawei.com>2015-03-04 11:46:16 +0100
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>2015-03-25 10:08:40 +0100
commit2c84599ca4c2ffd81301f23eabc69c5180ff2f64 (patch)
tree0201240875221688874339ad49b6d5ac4e17563e /fs/ubifs/super.c
parentUBIFS: fix incorrect unlocking handling (diff)
downloadlinux-2c84599ca4c2ffd81301f23eabc69c5180ff2f64.tar.xz
linux-2c84599ca4c2ffd81301f23eabc69c5180ff2f64.zip
UBIFS: do not write master node if need recovery
The commits 781c571 ("UBIFS: intialize LPT earlier") and 0980119 ("UBIFS: fix-up free space earlier") move some initialization before marking the master node dirty. But the modification changes the conditions of writing master. If unclean umount happens, ubifs may fail when mounting. But trying to mount it will write new master nodes on the flash. This is useless but increasing sqnum. So check need_recovery before writing master node, and don't create new master node if filesystem needs recovery. The behavour of the bug shows at: http://lists.infradead.org/pipermail/linux-mtd/2015-February/057712.html Signed-off-by: Sheng Yong <shengyong1@huawei.com> Reviewed-by: Ben Gardiner <ben.l.gardiner@gmail.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Diffstat (limited to 'fs/ubifs/super.c')
-rw-r--r--fs/ubifs/super.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 93e946561c5c..0b7378a7ee04 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -1284,7 +1284,7 @@ static int mount_ubifs(struct ubifs_info *c)
goto out_lpt;
}
- if (!c->ro_mount) {
+ if (!c->ro_mount && !c->need_recovery) {
/*
* Set the "dirty" flag so that if we reboot uncleanly we
* will notice this immediately on the next mount.