mirror of
https://github.com/torvalds/linux
synced 2024-10-02 01:10:22 +00:00
selftests/bpf: Add parallel support for classid
Include the current pid in the classid cgroup path. This way, different testers relying on classid-based configurations will have distinct classid cgroup directories, enabling them to run concurrently. Additionally, we leverage the current pid as the classid, ensuring unique identification. Signed-off-by: Yafang Shao <laoar.shao@gmail.com> Link: https://lore.kernel.org/r/20231111090034.4248-4-laoar.shao@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
4849775587
commit
f744d35ecf
|
@ -45,9 +45,12 @@
|
|||
#define format_parent_cgroup_path(buf, path) \
|
||||
format_cgroup_path_pid(buf, path, getppid())
|
||||
|
||||
#define format_classid_path(buf) \
|
||||
snprintf(buf, sizeof(buf), "%s%s", NETCLS_MOUNT_PATH, \
|
||||
CGROUP_WORK_DIR)
|
||||
#define format_classid_path_pid(buf, pid) \
|
||||
snprintf(buf, sizeof(buf), "%s%s%d", NETCLS_MOUNT_PATH, \
|
||||
CGROUP_WORK_DIR, pid)
|
||||
|
||||
#define format_classid_path(buf) \
|
||||
format_classid_path_pid(buf, getpid())
|
||||
|
||||
static __thread bool cgroup_workdir_mounted;
|
||||
|
||||
|
@ -551,15 +554,16 @@ int setup_classid_environment(void)
|
|||
|
||||
/**
|
||||
* set_classid() - Set a cgroupv1 net_cls classid
|
||||
* @id: the numeric classid
|
||||
*
|
||||
* Writes the passed classid into the cgroup work dir's net_cls.classid
|
||||
* Writes the classid into the cgroup work dir's net_cls.classid
|
||||
* file in order to later on trigger socket tagging.
|
||||
*
|
||||
* We leverage the current pid as the classid, ensuring unique identification.
|
||||
*
|
||||
* On success, it returns 0, otherwise on failure it returns 1. If there
|
||||
* is a failure, it prints the error to stderr.
|
||||
*/
|
||||
int set_classid(unsigned int id)
|
||||
int set_classid(void)
|
||||
{
|
||||
char cgroup_workdir[PATH_MAX - 42];
|
||||
char cgroup_classid_path[PATH_MAX + 1];
|
||||
|
@ -575,7 +579,7 @@ int set_classid(unsigned int id)
|
|||
return 1;
|
||||
}
|
||||
|
||||
if (dprintf(fd, "%u\n", id) < 0) {
|
||||
if (dprintf(fd, "%u\n", getpid()) < 0) {
|
||||
log_err("Setting cgroup classid");
|
||||
rc = 1;
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ int setup_cgroup_environment(void);
|
|||
void cleanup_cgroup_environment(void);
|
||||
|
||||
/* cgroupv1 related */
|
||||
int set_classid(unsigned int id);
|
||||
int set_classid(void);
|
||||
int join_classid(void);
|
||||
|
||||
int setup_classid_environment(void);
|
||||
|
|
|
@ -71,7 +71,7 @@ void test_cgroup_v1v2(void)
|
|||
}
|
||||
ASSERT_OK(run_test(cgroup_fd, server_fd, false), "cgroup-v2-only");
|
||||
setup_classid_environment();
|
||||
set_classid(42);
|
||||
set_classid();
|
||||
ASSERT_OK(run_test(cgroup_fd, server_fd, true), "cgroup-v1v2");
|
||||
cleanup_classid_environment();
|
||||
close(server_fd);
|
||||
|
|
Loading…
Reference in a new issue