Commit e7b924ca authored by Andrii Nakryiko's avatar Andrii Nakryiko
Browse files

libbpf: Deprecate bpf_object__load_xattr()

Deprecate non-extensible bpf_object__load_xattr() in v0.8 ([0]).

With log_level control through bpf_object_open_opts or
bpf_program__set_log_level(), we are finally at the point where
bpf_object__load_xattr() doesn't provide any functionality that can't be
accessed through other (better) ways. The other feature,
target_btf_path, is also controllable through bpf_object_open_opts.

  [0] Closes: https://github.com/libbpf/libbpf/issues/289



Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20211209193840.1248570-9-andrii@kernel.org
parent b3ce9079
Loading
Loading
Loading
Loading
+10 −13
Original line number Diff line number Diff line
@@ -7462,14 +7462,10 @@ static int bpf_object__resolve_externs(struct bpf_object *obj,
	return 0;
}

int bpf_object__load_xattr(struct bpf_object_load_attr *attr)
static int bpf_object_load(struct bpf_object *obj, int extra_log_level, const char *target_btf_path)
{
	struct bpf_object *obj;
	int err, i;

	if (!attr)
		return libbpf_err(-EINVAL);
	obj = attr->obj;
	if (!obj)
		return libbpf_err(-EINVAL);

@@ -7479,7 +7475,7 @@ int bpf_object__load_xattr(struct bpf_object_load_attr *attr)
	}

	if (obj->gen_loader)
		bpf_gen__init(obj->gen_loader, attr->log_level);
		bpf_gen__init(obj->gen_loader, extra_log_level);

	err = bpf_object__probe_loading(obj);
	err = err ? : bpf_object__load_vmlinux_btf(obj, false);
@@ -7488,8 +7484,8 @@ int bpf_object__load_xattr(struct bpf_object_load_attr *attr)
	err = err ? : bpf_object__sanitize_maps(obj);
	err = err ? : bpf_object__init_kern_struct_ops_maps(obj);
	err = err ? : bpf_object__create_maps(obj);
	err = err ? : bpf_object__relocate(obj, obj->btf_custom_path ? : attr->target_btf_path);
	err = err ? : bpf_object__load_progs(obj, attr->log_level);
	err = err ? : bpf_object__relocate(obj, obj->btf_custom_path ? : target_btf_path);
	err = err ? : bpf_object__load_progs(obj, extra_log_level);
	err = err ? : bpf_object_init_prog_arrays(obj);

	if (obj->gen_loader) {
@@ -7534,13 +7530,14 @@ int bpf_object__load_xattr(struct bpf_object_load_attr *attr)
	return libbpf_err(err);
}

int bpf_object__load(struct bpf_object *obj)
int bpf_object__load_xattr(struct bpf_object_load_attr *attr)
{
	struct bpf_object_load_attr attr = {
		.obj = obj,
	};
	return bpf_object_load(attr->obj, attr->log_level, attr->target_btf_path);
}

	return bpf_object__load_xattr(&attr);
int bpf_object__load(struct bpf_object *obj)
{
	return bpf_object_load(obj, 0, NULL);
}

static int make_parent_dir(const char *path)
+1 −0
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@ struct bpf_object_load_attr {

/* Load/unload object into/from kernel */
LIBBPF_API int bpf_object__load(struct bpf_object *obj);
LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__load() instead")
LIBBPF_API int bpf_object__load_xattr(struct bpf_object_load_attr *attr);
LIBBPF_DEPRECATED_SINCE(0, 6, "bpf_object__unload() is deprecated, use bpf_object__close() instead")
LIBBPF_API int bpf_object__unload(struct bpf_object *obj);