summaryrefslogtreecommitdiffstats
path: root/src/gpt-auto-generator
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-04-21 18:30:06 +0200
committerLennart Poettering <lennart@poettering.net>2021-04-23 17:57:22 +0200
commit400c1e8f981d6a9508fe04f5a1e33ea80f6f64c7 (patch)
tree391d592d8d6b26bc438ce58978aeeaf4e4ce1300 /src/gpt-auto-generator
parentman: document the new grow-file-system flag (diff)
downloadsystemd-400c1e8f981d6a9508fe04f5a1e33ea80f6f64c7.tar.xz
systemd-400c1e8f981d6a9508fe04f5a1e33ea80f6f64c7.zip
gpt-auto-generator: pull in systemd-growfs@.service if new GPT growfs partition flag is set
Diffstat (limited to 'src/gpt-auto-generator')
-rw-r--r--src/gpt-auto-generator/gpt-auto-generator.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
index d3af814136..705e138b8d 100644
--- a/src/gpt-auto-generator/gpt-auto-generator.c
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
@@ -194,6 +194,7 @@ static int add_mount(
const char *where,
const char *fstype,
bool rw,
+ bool growfs,
const char *options,
const char *description,
const char *post) {
@@ -271,8 +272,18 @@ static int add_mount(
if (r < 0)
return log_error_errno(r, "Failed to write unit file %s: %m", p);
- if (post)
- return generator_add_symlink(arg_dest, post, "requires", unit);
+ if (growfs) {
+ r = generator_hook_up_growfs(arg_dest, where, post);
+ if (r < 0)
+ return r;
+ }
+
+ if (post) {
+ r = generator_add_symlink(arg_dest, post, "requires", unit);
+ if (r < 0)
+ return r;
+ }
+
return 0;
}
@@ -321,6 +332,7 @@ static int add_partition_mount(
where,
p->fstype,
p->rw,
+ p->growfs,
NULL,
description,
SPECIAL_LOCAL_FS_TARGET);
@@ -385,6 +397,7 @@ static int add_automount(
const char *where,
const char *fstype,
bool rw,
+ bool growfs,
const char *options,
const char *description,
usec_t timeout) {
@@ -406,6 +419,7 @@ static int add_automount(
where,
fstype,
rw,
+ growfs,
opt,
description,
NULL);
@@ -481,7 +495,8 @@ static int add_xbootldr(DissectedPartition *p) {
p->node,
"/boot",
p->fstype,
- true,
+ /* rw= */ true,
+ /* growfs= */ false,
esp_or_xbootldr_options(p),
"Boot Loader Partition",
120 * USEC_PER_SEC);
@@ -555,7 +570,8 @@ static int add_esp(DissectedPartition *p, bool has_xbootldr) {
p->node,
esp_path,
p->fstype,
- true,
+ /* rw= */ true,
+ /* growfs= */ false,
esp_or_xbootldr_options(p),
"EFI System Partition Automount",
120 * USEC_PER_SEC);
@@ -651,7 +667,8 @@ static int add_root_mount(void) {
"/dev/gpt-auto-root",
in_initrd() ? "/sysroot" : "/",
NULL,
- arg_root_rw > 0,
+ /* rw= */ arg_root_rw > 0,
+ /* growfs= */ false,
NULL,
"Root Partition",
in_initrd() ? SPECIAL_INITRD_ROOT_FS_TARGET : SPECIAL_LOCAL_FS_TARGET);