label,
/* root = */ NULL,
uuid,
- /* discard = */ true,
- /* quiet = */ true,
+ MKFS_DISCARD | MKFS_QUIET,
/* sector_size = */ 0,
/* compression = */ NULL,
/* compression_level = */ NULL,
user_record_user_name_and_realm(h),
/* root = */ NULL,
fs_uuid,
- user_record_luks_discard(h),
- /* quiet = */ true,
+ (user_record_luks_discard(h) ? MKFS_DISCARD : 0) | MKFS_QUIET,
/* sector_size = */ 0,
/* compression = */ NULL,
/* compression_level= */ NULL,
(p->suppressing && partition_needs_populate(p->suppressing));
}
+static MakeFileSystemFlags partition_mkfs_flags(const Partition *p) {
+ MakeFileSystemFlags flags = 0;
+
+ if (arg_discard)
+ flags |= MKFS_DISCARD;
+
+ if (streq(p->format, "erofs") && !DEBUG_LOGGING)
+ flags |= MKFS_QUIET;
+
+ return flags;
+}
+
static int partition_read_definition(Partition *p, const char *path, const char *const *conf_file_dirs) {
ConfigTableItem table[] = {
return r;
r = make_filesystem(partition_target_path(t), p->format, strempty(p->new_label), root,
- p->fs_uuid, arg_discard,
- /* quiet = */ streq(p->format, "erofs") && !DEBUG_LOGGING,
+ p->fs_uuid, partition_mkfs_flags(p),
context->fs_sector_size, p->compression, p->compression_level,
extra_mkfs_options);
if (r < 0)
strempty(p->new_label),
root,
fs_uuid,
- arg_discard,
- /* quiet = */ streq(p->format, "erofs") && !DEBUG_LOGGING,
+ partition_mkfs_flags(p),
context->fs_sector_size,
p->compression,
p->compression_level,
strempty(p->new_label),
root,
p->fs_uuid,
- arg_discard,
- /* quiet = */ streq(p->format, "erofs") && !DEBUG_LOGGING,
+ partition_mkfs_flags(p),
context->fs_sector_size,
p->compression,
p->compression_level,
const char *label,
const char *root,
sd_id128_t uuid,
- bool discard,
- bool quiet,
+ MakeFileSystemFlags flags,
uint64_t sector_size,
char *compression,
char *compression_level,
"-U", vol_id,
"-I", "256",
"-m", "0",
- "-E", discard ? "discard,lazy_itable_init=1" : "nodiscard,lazy_itable_init=1",
+ "-E", FLAGS_SET(flags, MKFS_DISCARD) ? "discard,lazy_itable_init=1" : "nodiscard,lazy_itable_init=1",
"-b", "4096",
"-T", "default");
if (!argv)
if (root && strv_extend_many(&argv, "-d", root) < 0)
return log_oom();
- if (quiet && strv_extend(&argv, "-q") < 0)
+ if (FLAGS_SET(flags, MKFS_QUIET) && strv_extend(&argv, "-q") < 0)
return log_oom();
if (strv_extend(&argv, node) < 0)
if (!argv)
return log_oom();
- if (!discard && strv_extend(&argv, "--nodiscard") < 0)
+ if (!FLAGS_SET(flags, MKFS_DISCARD) && strv_extend(&argv, "--nodiscard") < 0)
return log_oom();
if (root && strv_extend_many(&argv, "-r", root) < 0)
return log_oom();
- if (quiet && strv_extend(&argv, "-q") < 0)
+ if (FLAGS_SET(flags, MKFS_QUIET) && strv_extend(&argv, "-q") < 0)
return log_oom();
if (compression) {
/* 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)
+ if (FLAGS_SET(flags, MKFS_QUIET))
stdio_fds[1] = -EBADF;
/* mkfs.btrfs expects a sector size of at least 4k bytes. */
"-f", /* force override, without this it doesn't seem to want to write to an empty partition */
"-l", label,
"-U", vol_id,
- "-t", one_zero(discard));
+ "-t", one_zero(FLAGS_SET(flags, MKFS_DISCARD)));
if (!argv)
return log_oom();
- if (quiet && strv_extend(&argv, "-q") < 0)
+ if (FLAGS_SET(flags, MKFS_QUIET) && strv_extend(&argv, "-q") < 0)
return log_oom();
if (sector_size > 0) {
if (!argv)
return log_oom();
- if (!discard && strv_extend(&argv, "-K") < 0)
+ if (!FLAGS_SET(flags, MKFS_DISCARD) && strv_extend(&argv, "-K") < 0)
return log_oom();
if (root) {
return log_oom();
}
- if (quiet && strv_extend(&argv, "-q") < 0)
+ if (FLAGS_SET(flags, MKFS_QUIET) && strv_extend(&argv, "-q") < 0)
return log_oom();
if (strv_extend(&argv, node) < 0)
return log_oom();
/* mkfs.vfat does not have a --quiet option so let's redirect stdout to /dev/null instead. */
- if (quiet)
+ if (FLAGS_SET(flags, MKFS_QUIET))
stdio_fds[1] = -EBADF;
} else if (streq(fstype, "swap")) {
if (!argv)
return log_oom();
- if (quiet)
+ if (FLAGS_SET(flags, MKFS_QUIET))
stdio_fds[1] = -EBADF;
} else if (streq(fstype, "squashfs")) {
}
/* mksquashfs -quiet option is pretty new so let's redirect stdout to /dev/null instead. */
- if (quiet)
+ if (FLAGS_SET(flags, MKFS_QUIET))
stdio_fds[1] = -EBADF;
} else if (streq(fstype, "erofs")) {
if (!argv)
return log_oom();
- if (quiet && strv_extend(&argv, "--quiet") < 0)
+ if (FLAGS_SET(flags, MKFS_QUIET) && strv_extend(&argv, "--quiet") < 0)
return log_oom();
if (compression) {
#include "forward.h"
+typedef enum MakeFilesystemFlags {
+ MKFS_QUIET = 1 << 0, /* Suppress mkfs command output */
+ MKFS_DISCARD = 1 << 1, /* Enable 'discard' mode on the filesystem */
+} MakeFileSystemFlags;
+
int mkfs_exists(const char *fstype);
int mkfs_supports_root_option(const char *fstype);
const char *label,
const char *root,
sd_id128_t uuid,
- bool discard,
- bool quiet,
+ MakeFileSystemFlags flags,
uint64_t sector_size,
char *compression,
char *compression_level,
assert_se(r >= 0);
assert_se(sd_id128_randomize(&id) >= 0);
- assert_se(make_filesystem(dissected->partitions[PARTITION_ESP].node, "vfat", "EFI", NULL, id, true, false, 0, NULL, NULL, NULL) >= 0);
+ assert_se(make_filesystem(dissected->partitions[PARTITION_ESP].node, "vfat", "EFI", NULL, id, MKFS_DISCARD, 0, NULL, NULL, NULL) >= 0);
assert_se(sd_id128_randomize(&id) >= 0);
- assert_se(make_filesystem(dissected->partitions[PARTITION_XBOOTLDR].node, "vfat", "xbootldr", NULL, id, true, false, 0, NULL, NULL, NULL) >= 0);
+ assert_se(make_filesystem(dissected->partitions[PARTITION_XBOOTLDR].node, "vfat", "xbootldr", NULL, id, MKFS_DISCARD, 0, NULL, NULL, NULL) >= 0);
assert_se(sd_id128_randomize(&id) >= 0);
- assert_se(make_filesystem(dissected->partitions[PARTITION_ROOT].node, "ext4", "root", NULL, id, true, false, 0, NULL, NULL, NULL) >= 0);
+ assert_se(make_filesystem(dissected->partitions[PARTITION_ROOT].node, "ext4", "root", NULL, id, MKFS_DISCARD, 0, NULL, NULL, NULL) >= 0);
assert_se(sd_id128_randomize(&id) >= 0);
- assert_se(make_filesystem(dissected->partitions[PARTITION_HOME].node, "ext4", "home", NULL, id, true, false, 0, NULL, NULL, NULL) >= 0);
+ assert_se(make_filesystem(dissected->partitions[PARTITION_HOME].node, "ext4", "home", NULL, id, MKFS_DISCARD, 0, NULL, NULL, NULL) >= 0);
dissected = dissected_image_unref(dissected);