const char *where,
const char *fstype,
bool rw,
+ bool growfs,
const char *options,
const char *description,
const char *post) {
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;
}
where,
p->fstype,
p->rw,
+ p->growfs,
NULL,
description,
SPECIAL_LOCAL_FS_TARGET);
const char *where,
const char *fstype,
bool rw,
+ bool growfs,
const char *options,
const char *description,
usec_t timeout) {
where,
fstype,
rw,
+ growfs,
opt,
description,
NULL);
p->node,
"/boot",
p->fstype,
- true,
+ /* rw= */ true,
+ /* growfs= */ false,
esp_or_xbootldr_options(p),
"Boot Loader Partition",
120 * USEC_PER_SEC);
p->node,
esp_path,
p->fstype,
- true,
+ /* rw= */ true,
+ /* growfs= */ false,
esp_or_xbootldr_options(p),
"EFI System Partition Automount",
120 * USEC_PER_SEC);
"/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);
const char *unit_file;
int r;
+ assert(dir);
+ assert(where);
+
escaped = cescape(where);
if (!escaped)
return log_oom();
"BindsTo=%%i.mount\n"
"Conflicts=shutdown.target\n"
"After=%%i.mount\n"
- "Before=shutdown.target %s\n",
+ "Before=shutdown.target%s%s\n",
program_invocation_short_name,
- target);
+ target ? " " : "",
+ strempty(target));
if (empty_or_root(where)) /* Make sure the root fs is actually writable before we resize it */
fprintf(f,