sysupdate: keep database of installed files/patterns, and use to GC them (#42646)
Transfer files might come and go, components might be enabled and disabled. Patterns might change. Let's keep track of what we install, so that we can automatically gc everything no longer owned by any enabled transfer.
This commit is contained in:
@@ -1805,16 +1805,13 @@ int pick_up_credentials(const PickUpCredential *table, size_t n_table_entry) {
|
||||
return log_error_errno(credential_dir_fd, "Failed to open credentials directory: %m");
|
||||
|
||||
_cleanup_free_ DirectoryEntries *des = NULL;
|
||||
r = readdir_all(credential_dir_fd, RECURSE_DIR_SORT|RECURSE_DIR_IGNORE_DOT|RECURSE_DIR_ENSURE_TYPE, &des);
|
||||
r = readdir_all(credential_dir_fd, RECURSE_DIR_SORT|RECURSE_DIR_IGNORE_DOT|RECURSE_DIR_MUST_BE_REGULAR, &des);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to enumerate credentials: %m");
|
||||
|
||||
FOREACH_ARRAY(i, des->entries, des->n_entries) {
|
||||
struct dirent *de = *i;
|
||||
|
||||
if (de->d_type != DT_REG)
|
||||
continue;
|
||||
|
||||
FOREACH_ARRAY(t, table, n_table_entry) {
|
||||
r = pick_up_credential_one(credential_dir_fd, de->d_name, t);
|
||||
if (r != 0) {
|
||||
|
||||
@@ -358,7 +358,7 @@ int pcrextend_imds_userdata_word(const struct iovec *data, char **ret) {
|
||||
/* We include both a hash of the complete user data, and a truncated version of the data in the word
|
||||
* we measure. The former protects the actual data, the latter is useful for debugging. */
|
||||
|
||||
_cleanup_free_ char *hash = hexmem(SHA256_DIRECT(data->iov_base, data->iov_len), SHA256_DIGEST_SIZE);
|
||||
_cleanup_free_ char *hash = sha256_direct_hex(data->iov_base, data->iov_len);
|
||||
if (!hash)
|
||||
return log_oom();
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
#include "chattr-util.h"
|
||||
#include "fd-util.h"
|
||||
#include "fs-util.h"
|
||||
#include "hexdecoct.h"
|
||||
#include "iovec-util.h"
|
||||
#include "libarchive-util.h"
|
||||
#include "mountpoint-util.h"
|
||||
@@ -1184,7 +1183,7 @@ static int hardlink_lookup(
|
||||
else
|
||||
assert(d->have_unique_mount_id == (r > 0));
|
||||
|
||||
m = hexmem(SHA256_DIRECT(handle->f_handle, handle->handle_bytes), SHA256_DIGEST_SIZE);
|
||||
m = sha256_direct_hex(handle->f_handle, handle->handle_bytes);
|
||||
if (!m)
|
||||
return log_oom();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user