]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ubifs: Fix default compression selection in ubifs
authorGabor Juhos <juhosg@openwrt.org>
Sun, 9 Dec 2018 17:12:13 +0000 (18:12 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2019 08:20:09 +0000 (09:20 +0100)
[ Upstream commit d62e98ed1efcaa94caa004f622944afdce5f1c3c ]

When ubifs is build without the LZO compressor and no compressor is
given the creation of the default file system will fail. before
selection the LZO compressor check if it is present and if not fall back
to the zlib or none.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/ubifs/sb.c

index bf17f58908ff95bc63efbe48dd5ede204a28ac78..11dc3977fb64fe5583297194ee990f8fb0571d31 100644 (file)
 /* Default time granularity in nanoseconds */
 #define DEFAULT_TIME_GRAN 1000000000
 
+static int get_default_compressor(struct ubifs_info *c)
+{
+       if (ubifs_compr_present(c, UBIFS_COMPR_LZO))
+               return UBIFS_COMPR_LZO;
+
+       if (ubifs_compr_present(c, UBIFS_COMPR_ZLIB))
+               return UBIFS_COMPR_ZLIB;
+
+       return UBIFS_COMPR_NONE;
+}
+
 /**
  * create_default_filesystem - format empty UBI volume.
  * @c: UBIFS file-system description object
@@ -186,7 +197,7 @@ static int create_default_filesystem(struct ubifs_info *c)
        if (c->mount_opts.override_compr)
                sup->default_compr = cpu_to_le16(c->mount_opts.compr_type);
        else
-               sup->default_compr = cpu_to_le16(UBIFS_COMPR_LZO);
+               sup->default_compr = cpu_to_le16(get_default_compressor(c));
 
        generate_random_uuid(sup->uuid);