machined: "machinectl clean" can take a while, do it asynchronously from a background process

This is a follow-up to 5d2036b5f3, and also makes
the "machinectl clean" verb asynchronous, after all it's little more than a
series of image removals.

The changes required to make this happen are a bit more comprehensive as we
need to pass information about deleted images back to the client, as well as
information about the image we failed on if we failed on one. Hence, create a
temporary file in /tmp, serialize that data into, and read it from the parent
after the operation is complete.
This commit is contained in:
Lennart Poettering
2016-06-24 16:01:14 +02:00
parent 5816a84352
commit 03c2b2889f
8 changed files with 274 additions and 57 deletions
+1 -1
View File
@@ -1207,7 +1207,7 @@ int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_erro
/* Copying might take a while, hence install a watch on the child, and return */
r = operation_new(m->manager, m, child, message, errno_pipe_fd[0]);
r = operation_new(m->manager, m, child, message, errno_pipe_fd[0], NULL);
if (r < 0) {
(void) sigkill_wait(child);
return r;