Merge branch 'stable-3.2' into pandora-3.2
[pandora-kernel.git] / fs / ubifs / sb.c
index b73ecd8..15e2fc5 100644 (file)
@@ -130,7 +130,6 @@ static int create_default_filesystem(struct ubifs_info *c)
         * orphan node.
         */
        orph_lebs = UBIFS_MIN_ORPH_LEBS;
-#ifdef CONFIG_UBIFS_FS_DEBUG
        if (c->leb_cnt - min_leb_cnt > 1)
                /*
                 * For debugging purposes it is better to have at least 2
@@ -138,7 +137,6 @@ static int create_default_filesystem(struct ubifs_info *c)
                 * consolidations and would be stressed more.
                 */
                orph_lebs += 1;
-#endif
 
        main_lebs = c->leb_cnt - UBIFS_SB_LEBS - UBIFS_MST_LEBS - log_lebs;
        main_lebs -= orph_lebs;
@@ -196,7 +194,7 @@ static int create_default_filesystem(struct ubifs_info *c)
        sup->rp_size = cpu_to_le64(tmp64);
        sup->ro_compat_version = cpu_to_le32(UBIFS_RO_COMPAT_VERSION);
 
-       err = ubifs_write_node(c, sup, UBIFS_SB_NODE_SZ, 0, 0, UBI_LONGTERM);
+       err = ubifs_write_node(c, sup, UBIFS_SB_NODE_SZ, 0, 0);
        kfree(sup);
        if (err)
                return err;
@@ -252,14 +250,13 @@ static int create_default_filesystem(struct ubifs_info *c)
 
        mst->total_used = cpu_to_le64(UBIFS_INO_NODE_SZ);
 
-       err = ubifs_write_node(c, mst, UBIFS_MST_NODE_SZ, UBIFS_MST_LNUM, 0,
-                              UBI_UNKNOWN);
+       err = ubifs_write_node(c, mst, UBIFS_MST_NODE_SZ, UBIFS_MST_LNUM, 0);
        if (err) {
                kfree(mst);
                return err;
        }
-       err = ubifs_write_node(c, mst, UBIFS_MST_NODE_SZ, UBIFS_MST_LNUM + 1, 0,
-                              UBI_UNKNOWN);
+       err = ubifs_write_node(c, mst, UBIFS_MST_NODE_SZ, UBIFS_MST_LNUM + 1,
+                              0);
        kfree(mst);
        if (err)
                return err;
@@ -282,8 +279,7 @@ static int create_default_filesystem(struct ubifs_info *c)
        key_write_idx(c, &key, &br->key);
        br->lnum = cpu_to_le32(main_first + DEFAULT_DATA_LEB);
        br->len  = cpu_to_le32(UBIFS_INO_NODE_SZ);
-       err = ubifs_write_node(c, idx, tmp, main_first + DEFAULT_IDX_LEB, 0,
-                              UBI_UNKNOWN);
+       err = ubifs_write_node(c, idx, tmp, main_first + DEFAULT_IDX_LEB, 0);
        kfree(idx);
        if (err)
                return err;
@@ -315,8 +311,7 @@ static int create_default_filesystem(struct ubifs_info *c)
        ino->flags = cpu_to_le32(UBIFS_COMPR_FL);
 
        err = ubifs_write_node(c, ino, UBIFS_INO_NODE_SZ,
-                              main_first + DEFAULT_DATA_LEB, 0,
-                              UBI_UNKNOWN);
+                              main_first + DEFAULT_DATA_LEB, 0);
        kfree(ino);
        if (err)
                return err;
@@ -335,8 +330,7 @@ static int create_default_filesystem(struct ubifs_info *c)
                return -ENOMEM;
 
        cs->ch.node_type = UBIFS_CS_NODE;
-       err = ubifs_write_node(c, cs, UBIFS_CS_NODE_SZ, UBIFS_LOG_LNUM,
-                              0, UBI_UNKNOWN);
+       err = ubifs_write_node(c, cs, UBIFS_CS_NODE_SZ, UBIFS_LOG_LNUM, 0);
        kfree(cs);
 
        ubifs_msg("default file-system created");
@@ -410,13 +404,23 @@ static int validate_sb(struct ubifs_info *c, struct ubifs_sb_node *sup)
        }
 
        if (c->main_lebs < UBIFS_MIN_MAIN_LEBS) {
-               err = 7;
+               ubifs_err("too few main LEBs count %d, must be at least %d",
+                         c->main_lebs, UBIFS_MIN_MAIN_LEBS);
                goto failed;
        }
 
-       if (c->max_bud_bytes < (long long)c->leb_size * UBIFS_MIN_BUD_LEBS ||
-           c->max_bud_bytes > (long long)c->leb_size * c->main_lebs) {
-               err = 8;
+       max_bytes = (long long)c->leb_size * UBIFS_MIN_BUD_LEBS;
+       if (c->max_bud_bytes < max_bytes) {
+               ubifs_err("too small journal (%lld bytes), must be at least "
+                         "%lld bytes",  c->max_bud_bytes, max_bytes);
+               goto failed;
+       }
+
+       max_bytes = (long long)c->leb_size * c->main_lebs;
+       if (c->max_bud_bytes > max_bytes) {
+               ubifs_err("too large journal size (%lld bytes), only %lld bytes"
+                         "available in the main area",
+                         c->max_bud_bytes, max_bytes);
                goto failed;
        }
 
@@ -450,7 +454,6 @@ static int validate_sb(struct ubifs_info *c, struct ubifs_sb_node *sup)
                goto failed;
        }
 
-       max_bytes = c->main_lebs * (long long)c->leb_size;
        if (c->rp_size < 0 || max_bytes < c->rp_size) {
                err = 14;
                goto failed;
@@ -466,7 +469,7 @@ static int validate_sb(struct ubifs_info *c, struct ubifs_sb_node *sup)
 
 failed:
        ubifs_err("bad superblock, error %d", err);
-       dbg_dump_node(c, sup);
+       ubifs_dump_node(c, sup);
        return -EINVAL;
 }
 
@@ -509,7 +512,7 @@ int ubifs_write_sb_node(struct ubifs_info *c, struct ubifs_sb_node *sup)
        int len = ALIGN(UBIFS_SB_NODE_SZ, c->min_io_size);
 
        ubifs_prepare_node(c, sup, UBIFS_SB_NODE_SZ, 1);
-       return ubifs_leb_change(c, UBIFS_SB_LNUM, sup, len, UBI_LONGTERM);
+       return ubifs_leb_change(c, UBIFS_SB_LNUM, sup, len);
 }
 
 /**
@@ -682,7 +685,7 @@ static int fixup_leb(struct ubifs_info *c, int lnum, int len)
        if (err)
                return err;
 
-       return ubifs_leb_change(c, lnum, c->sbuf, len, UBI_UNKNOWN);
+       return ubifs_leb_change(c, lnum, c->sbuf, len);
 }
 
 /**