Merge pull request #26044 from DaanDeMeyer/repart-sector-size
repart: Allow configuring sector size
This commit is contained in:
+36
-38
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user