]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
mkfs-util: Add support for btrfs compression
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 3 Sep 2024 06:18:31 +0000 (08:18 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 17 Feb 2025 13:11:04 +0000 (14:11 +0100)
Corresponding PR in btrfs-progs: https://github.com/kdave/btrfs-progs/pull/882

man/repart.d.xml
src/shared/mkfs-util.c

index 8e3d496ab2192d010b5cd03da5b5221388f235aa..2f933efdae79105f8855c0d9a608ae293b68ec83 100644 (file)
                 <entry>lz4, lz4hc, lzma, deflate, libdeflate, zstd</entry>
                 <entry><member><citerefentry project='man-pages'><refentrytitle>mkfs.erofs</refentrytitle><manvolnum>1</manvolnum></citerefentry></member></entry>
               </row>
+
+              <row>
+                <entry><constant>btrfs</constant></entry>
+                <entry>zlib, lzo, zstd</entry>
+                <entry><member><citerefentry project='man-pages'><refentrytitle>mkfs.btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry></member></entry>
+              </row>
             </tbody>
           </tgroup>
         </table>
index 87c7d52a979439a5a78abffa5aaff73684bd1849..46fa685b0d60bb5627111656a3f5b1f83e6c077e 100644 (file)
@@ -461,6 +461,20 @@ int make_filesystem(
                 if (quiet && strv_extend(&argv, "-q") < 0)
                         return log_oom();
 
+                if (compression) {
+                        _cleanup_free_ char *c = NULL;
+
+                        c = strdup(compression);
+                        if (!c)
+                                return log_oom();
+
+                        if (compression_level && !strextend(&c, ":", compression_level))
+                                return log_oom();
+
+                        if (strv_extend_many(&argv, "--compress", c) < 0)
+                                return log_oom();
+                }
+
                 /* mkfs.btrfs unconditionally warns about several settings changing from v5.15 onwards which
                  * isn't silenced by "-q", so let's redirect stdout to /dev/null as well. */
                 if (quiet)