summaryrefslogtreecommitdiffstats
path: root/discover/grub2/grub2.c
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2019-11-05 16:42:14 +0800
committerJeremy Kerr <jk@ozlabs.org>2019-11-29 13:54:10 +0800
commit8cb74c4502712162ba899bc06e2d0cf249a8697b (patch)
tree6e926be8a22c915e18705ed3bc2b8ae5a27f5cc8 /discover/grub2/grub2.c
parent1580c6557d4e703348edb0dda83814f8972e9f3d (diff)
downloadtalos-petitboot-8cb74c4502712162ba899bc06e2d0cf249a8697b.tar.gz
talos-petitboot-8cb74c4502712162ba899bc06e2d0cf249a8697b.zip
discover/grub2: expose a struct for grub2 file references
Currently, we have struct grub2_resource_info to keep references to boot payloads that may be returned in boot options, and be (conditionally) resolved by the parser. We'd also like to use the same semantics for other file references in the grub2 parser, for arbitrary usage in scripts - where files are also referenced by a path and an optional device. To do this, this change moves struct grub2_resource_info to grub2.h, and renames to struct grub2_file. Future changes will use this for script-internal file handling. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/grub2/grub2.c')
-rw-r--r--discover/grub2/grub2.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/discover/grub2/grub2.c b/discover/grub2/grub2.c
index f62ccdd..412298b 100644
--- a/discover/grub2/grub2.c
+++ b/discover/grub2/grub2.c
@@ -33,17 +33,12 @@ static const char *const grub2_conf_files[] = {
NULL
};
-struct grub2_resource_info {
- char *root;
- char *path;
-};
-
/* we use slightly different resources for grub2 */
struct resource *create_grub2_resource(struct discover_boot_option *opt,
struct discover_device *orig_device,
const char *root, const char *path)
{
- struct grub2_resource_info *info;
+ struct grub2_file *file;
struct resource *res;
if (strstr(path, "://")) {
@@ -55,13 +50,12 @@ struct resource *create_grub2_resource(struct discover_boot_option *opt,
res = talloc(opt, struct resource);
if (root) {
- info = talloc(res, struct grub2_resource_info);
- talloc_reference(info, root);
- info->root = talloc_strdup(info, root);
- info->path = talloc_strdup(info, path);
+ file = talloc(res, struct grub2_file);
+ file->dev = talloc_strdup(file, root);
+ file->path = talloc_strdup(file, path);
res->resolved = false;
- res->info = info;
+ res->info = file;
} else
resolve_resource_against_device(res, orig_device, path);
@@ -72,18 +66,18 @@ struct resource *create_grub2_resource(struct discover_boot_option *opt,
bool resolve_grub2_resource(struct device_handler *handler,
struct resource *res)
{
- struct grub2_resource_info *info = res->info;
+ struct grub2_file *file = res->info;
struct discover_device *dev;
assert(!res->resolved);
- dev = device_lookup_by_uuid(handler, info->root);
+ dev = device_lookup_by_uuid(handler, file->dev);
if (!dev)
return false;
- resolve_resource_against_device(res, dev, info->path);
- talloc_free(info);
+ resolve_resource_against_device(res, dev, file->path);
+ talloc_free(file);
return true;
}
OpenPOWER on IntegriCloud