Merge pull request #26044 from DaanDeMeyer/repart-sector-size

repart: Allow configuring sector size
This commit is contained in:
Daan De Meyer
2023-01-18 09:54:50 +01:00
committed by GitHub
10 changed files with 112 additions and 77 deletions
+36 -38
View File
@@ -175,13 +175,11 @@ static int do_mcopy(const char *node, const char *root) {
continue;
}
r = strv_consume(&argv, TAKE_PTR(p));
if (r < 0)
if (strv_consume(&argv, TAKE_PTR(p)) < 0)
return log_oom();
}
r = strv_extend(&argv, "::");
if (r < 0)
if (strv_extend(&argv, "::") < 0)
return log_oom();
if (fstat(rfd, &st) < 0)
@@ -303,6 +301,7 @@ int make_filesystem(
const char *root,
sd_id128_t uuid,
bool discard,
uint64_t sector_size,
char * const *extra_mkfs_args) {
_cleanup_free_ char *mkfs = NULL, *mangled_label = NULL;
@@ -399,15 +398,13 @@ int make_filesystem(
"-I", "256",
"-m", "0",
"-E", discard ? "discard,lazy_itable_init=1" : "nodiscard,lazy_itable_init=1",
"-b", "4096",
node);
if (!argv)
return log_oom();
if (root) {
r = strv_extend_strv(&argv, STRV_MAKE("-d", root), false);
if (r < 0)
return log_oom();
}
if (root && strv_extend_strv(&argv, STRV_MAKE("-d", root), false) < 0)
return log_oom();
} else if (STR_IN_SET(fstype, "ext3", "ext4")) {
argv = strv_new(mkfs,
@@ -418,13 +415,11 @@ int make_filesystem(
"-O", "has_journal",
"-m", "0",
"-E", discard ? "discard,lazy_itable_init=1" : "nodiscard,lazy_itable_init=1",
"-b", "4096",
node);
if (root) {
r = strv_extend_strv(&argv, STRV_MAKE("-d", root), false);
if (r < 0)
return log_oom();
}
if (root && strv_extend_strv(&argv, STRV_MAKE("-d", root), false) < 0)
return log_oom();
} else if (streq(fstype, "btrfs")) {
argv = strv_new(mkfs,
@@ -435,17 +430,11 @@ int make_filesystem(
if (!argv)
return log_oom();
if (!discard) {
r = strv_extend(&argv, "--nodiscard");
if (r < 0)
return log_oom();
}
if (!discard && strv_extend(&argv, "--nodiscard") < 0)
return log_oom();
if (root) {
r = strv_extend_strv(&argv, STRV_MAKE("-r", root), false);
if (r < 0)
return log_oom();
}
if (root && strv_extend_strv(&argv, STRV_MAKE("-r", root), false) < 0)
return log_oom();
} else if (streq(fstype, "f2fs")) {
argv = strv_new(mkfs,
@@ -471,23 +460,27 @@ int make_filesystem(
if (!argv)
return log_oom();
if (!discard) {
r = strv_extend(&argv, "-K");
if (r < 0)
return log_oom();
}
if (!discard && strv_extend(&argv, "-K") < 0)
return log_oom();
if (root) {
r = make_protofile(root, &protofile);
if (r < 0)
return r;
r = strv_extend_strv(&argv, STRV_MAKE("-p", protofile), false);
if (r < 0)
if (strv_extend_strv(&argv, STRV_MAKE("-p", protofile), false) < 0)
return log_oom();
}
} else if (streq(fstype, "vfat"))
if (sector_size > 0) {
if (strv_extend(&argv, "-s") < 0)
return log_oom();
if (strv_extendf(&argv, "size=%"PRIu64, sector_size) < 0)
return log_oom();
}
} else if (streq(fstype, "vfat")) {
argv = strv_new(mkfs,
"-i", vol_id,
@@ -495,7 +488,15 @@ int make_filesystem(
"-F", "32", /* yes, we force FAT32 here */
node);
else if (streq(fstype, "swap"))
if (sector_size > 0) {
if (strv_extend(&argv, "-S") < 0)
return log_oom();
if (strv_extendf(&argv, "%"PRIu64, sector_size) < 0)
return log_oom();
}
} else if (streq(fstype, "swap"))
/* TODO: add --quiet here if
* https://github.com/util-linux/util-linux/issues/1499 resolved. */
@@ -523,11 +524,8 @@ int make_filesystem(
if (!argv)
return log_oom();
if (extra_mkfs_args) {
r = strv_extend_strv(&argv, extra_mkfs_args, false);
if (r < 0)
return log_oom();
}
if (extra_mkfs_args && strv_extend_strv(&argv, extra_mkfs_args, false) < 0)
return log_oom();
if (root && stat(root, &st) < 0)
return log_error_errno(errno, "Failed to stat %s: %m", root);
+9 -1
View File
@@ -11,4 +11,12 @@ int mkfs_exists(const char *fstype);
int mkfs_supports_root_option(const char *fstype);
int make_filesystem(const char *node, const char *fstype, const char *label, const char *root, sd_id128_t uuid, bool discard, char * const *extra_mkfs_args);
int make_filesystem(
const char *node,
const char *fstype,
const char *label,
const char *root,
sd_id128_t uuid,
bool discard,
uint64_t sector_size,
char * const *extra_mkfs_args);