mirror of
https://github.com/systemd/systemd
synced 2024-10-02 22:37:25 +00:00
vmspawn: add --discard-disk= to control handling of disk discard requests
Fixes issue #32024, using --discard-disk=yes will enable handling of disk discarding requests, saving space for long running VMs as desired.
This commit is contained in:
parent
844af666ed
commit
edd85c8414
|
@ -243,6 +243,16 @@
|
|||
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--discard-disk=<replaceable>BOOL</replaceable></option></term>
|
||||
|
||||
<listitem><para>Controls whether qemu processes discard requests from the VM.
|
||||
This prevents long running VMs from using more disk space than required.
|
||||
This is enabled by default.</para>
|
||||
|
||||
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--secure-boot=</option><replaceable>BOOL</replaceable></term>
|
||||
|
||||
|
|
|
@ -97,6 +97,7 @@ static char **arg_extra_drives = NULL;
|
|||
static char *arg_background = NULL;
|
||||
static bool arg_pass_ssh_key = true;
|
||||
static char *arg_ssh_key_type = NULL;
|
||||
static bool arg_discard_disk = true;
|
||||
|
||||
STATIC_DESTRUCTOR_REGISTER(arg_directory, freep);
|
||||
STATIC_DESTRUCTOR_REGISTER(arg_image, freep);
|
||||
|
@ -146,6 +147,7 @@ static int help(void) {
|
|||
" --network-user-mode Use user mode networking\n"
|
||||
" --secure-boot=BOOL Enable searching for firmware supporting SecureBoot\n"
|
||||
" --firmware=PATH|list Select firmware definition file (or list available)\n"
|
||||
" --discard-disk=BOOL Control processing of discard requests\n"
|
||||
"\n%3$sSystem Identity:%4$s\n"
|
||||
" -M --machine=NAME Set the machine name for the VM\n"
|
||||
" --uuid=UUID Set a specific machine UUID for the VM\n"
|
||||
|
@ -213,6 +215,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||
ARG_SET_CREDENTIAL,
|
||||
ARG_LOAD_CREDENTIAL,
|
||||
ARG_FIRMWARE,
|
||||
ARG_DISCARD_DISK,
|
||||
ARG_CONSOLE,
|
||||
ARG_BACKGROUND,
|
||||
};
|
||||
|
@ -254,6 +257,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||
{ "set-credential", required_argument, NULL, ARG_SET_CREDENTIAL },
|
||||
{ "load-credential", required_argument, NULL, ARG_LOAD_CREDENTIAL },
|
||||
{ "firmware", required_argument, NULL, ARG_FIRMWARE },
|
||||
{ "discard-disk", required_argument, NULL, ARG_DISCARD_DISK },
|
||||
{ "background", required_argument, NULL, ARG_BACKGROUND },
|
||||
{}
|
||||
};
|
||||
|
@ -507,6 +511,12 @@ static int parse_argv(int argc, char *argv[]) {
|
|||
|
||||
break;
|
||||
|
||||
case ARG_DISCARD_DISK:
|
||||
r = parse_boolean_argument("--discard-disk=", optarg, &arg_discard_disk);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_BACKGROUND:
|
||||
r = free_and_strdup_warn(&arg_background, optarg);
|
||||
if (r < 0)
|
||||
|
@ -1533,7 +1543,7 @@ static int run_virtual_machine(int kvm_device_fd, int vhost_device_fd) {
|
|||
if (!escaped_image)
|
||||
log_oom();
|
||||
|
||||
r = strv_extendf(&cmdline, "if=none,id=mkosi,file=%s,format=raw", escaped_image);
|
||||
r = strv_extendf(&cmdline, "if=none,id=mkosi,file=%s,format=raw,discard=%s", escaped_image, on_off(arg_discard_disk));
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
|
||||
|
|
Loading…
Reference in a new issue