mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
68 lines
2.1 KiB
C
68 lines
2.1 KiB
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
#pragma once
|
|
|
|
#include <inttypes.h>
|
|
#include <stdbool.h>
|
|
#include <sys/types.h>
|
|
|
|
#include "sd-id128.h"
|
|
|
|
#include "fs-util.h"
|
|
#include "time-util.h"
|
|
|
|
typedef struct InstanceMetadata InstanceMetadata;
|
|
typedef struct Instance Instance;
|
|
|
|
#include "sysupdate-resource.h"
|
|
#include "sysupdate-partition.h"
|
|
|
|
struct InstanceMetadata {
|
|
/* Various bits of metadata for each instance, that is either derived from the filename/GPT label or
|
|
* from metadata of the file/partition itself */
|
|
char *version;
|
|
sd_id128_t partition_uuid;
|
|
bool partition_uuid_set;
|
|
uint64_t partition_flags; /* GPT partition flags */
|
|
bool partition_flags_set;
|
|
usec_t mtime;
|
|
mode_t mode;
|
|
uint64_t size; /* uncompressed size of the file */
|
|
uint64_t tries_done, tries_left; /* for boot assessment counters */
|
|
int no_auto;
|
|
int read_only;
|
|
int growfs;
|
|
uint8_t sha256sum[32]; /* SHA256 sum of the download (i.e. compressed) file */
|
|
bool sha256sum_set;
|
|
};
|
|
|
|
#define INSTANCE_METADATA_NULL \
|
|
{ \
|
|
.mtime = USEC_INFINITY, \
|
|
.mode = MODE_INVALID, \
|
|
.size = UINT64_MAX, \
|
|
.tries_done = UINT64_MAX, \
|
|
.tries_left = UINT64_MAX, \
|
|
.no_auto = -1, \
|
|
.read_only = -1, \
|
|
.growfs = -1, \
|
|
}
|
|
|
|
struct Instance {
|
|
/* A pointer back to the resource this belongs to */
|
|
Resource *resource;
|
|
|
|
/* Metadata of this version */
|
|
InstanceMetadata metadata;
|
|
|
|
/* Where we found the instance */
|
|
char *path;
|
|
PartitionInfo partition_info;
|
|
};
|
|
|
|
void instance_metadata_destroy(InstanceMetadata *m);
|
|
|
|
int instance_new(Resource *rr, const char *path, const InstanceMetadata *f, Instance **ret);
|
|
Instance *instance_free(Instance *i);
|
|
|
|
DEFINE_TRIVIAL_CLEANUP_FUNC(Instance*, instance_free);
|