* [PATCH v2 bpf-next] bpftool: Support bpffs mountpoint as pin path for prog loadall
@ 2023-05-06 3:07 Pengcheng Yang
2023-05-09 8:18 ` Quentin Monnet
2023-05-17 14:10 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Pengcheng Yang @ 2023-05-06 3:07 UTC (permalink / raw)
To: Quentin Monnet, Alexei Starovoitov, Daniel Borkmann,
Andrii Nakryiko, Song Liu, Stanislav Fomichev
Cc: bpf, Pengcheng Yang
Currently, when using prog loadall, if the pin path is a bpffs
mountpoint, bpffs will be repeatedly mounted to the parent directory
of the bpffs mountpoint path.
For example,
$ bpftool prog loadall test.o /sys/fs/bpf
currently bpffs will be repeatedly mounted to /sys/fs.
Signed-off-by: Pengcheng Yang <yangpc@wangsu.com>
---
v2: compatible with commit 0232b7889786 ("bpftool: Register struct_ops with a link.")
tools/bpf/bpftool/common.c | 9 ++++++---
tools/bpf/bpftool/iter.c | 2 +-
tools/bpf/bpftool/main.h | 2 +-
tools/bpf/bpftool/prog.c | 2 +-
tools/bpf/bpftool/struct_ops.c | 2 +-
5 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c
index 1360c82ae732..cc6e6aae2447 100644
--- a/tools/bpf/bpftool/common.c
+++ b/tools/bpf/bpftool/common.c
@@ -68,7 +68,7 @@ void p_info(const char *fmt, ...)
va_end(ap);
}
-static bool is_bpffs(char *path)
+static bool is_bpffs(const char *path)
{
struct statfs st_fs;
@@ -244,13 +244,16 @@ int open_obj_pinned_any(const char *path, enum bpf_obj_type exp_type)
return fd;
}
-int mount_bpffs_for_pin(const char *name)
+int mount_bpffs_for_pin(const char *name, bool is_dir)
{
char err_str[ERR_MAX_LEN];
char *file;
char *dir;
int err = 0;
+ if (is_dir && is_bpffs(name))
+ return err;
+
file = malloc(strlen(name) + 1);
if (!file) {
p_err("mem alloc failed");
@@ -286,7 +289,7 @@ int do_pin_fd(int fd, const char *name)
{
int err;
- err = mount_bpffs_for_pin(name);
+ err = mount_bpffs_for_pin(name, false);
if (err)
return err;
diff --git a/tools/bpf/bpftool/iter.c b/tools/bpf/bpftool/iter.c
index 9a1d2365a297..6b0e5202ca7a 100644
--- a/tools/bpf/bpftool/iter.c
+++ b/tools/bpf/bpftool/iter.c
@@ -76,7 +76,7 @@ static int do_pin(int argc, char **argv)
goto close_obj;
}
- err = mount_bpffs_for_pin(path);
+ err = mount_bpffs_for_pin(path, false);
if (err)
goto close_link;
diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h
index a49534d7eafa..b8bb08d10dec 100644
--- a/tools/bpf/bpftool/main.h
+++ b/tools/bpf/bpftool/main.h
@@ -142,7 +142,7 @@ const char *get_fd_type_name(enum bpf_obj_type type);
char *get_fdinfo(int fd, const char *key);
int open_obj_pinned(const char *path, bool quiet);
int open_obj_pinned_any(const char *path, enum bpf_obj_type exp_type);
-int mount_bpffs_for_pin(const char *name);
+int mount_bpffs_for_pin(const char *name, bool is_dir);
int do_pin_any(int argc, char **argv, int (*get_fd_by_id)(int *, char ***));
int do_pin_fd(int fd, const char *name);
diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c
index 91b6075b2db3..1f736dc29824 100644
--- a/tools/bpf/bpftool/prog.c
+++ b/tools/bpf/bpftool/prog.c
@@ -1739,7 +1739,7 @@ static int load_with_options(int argc, char **argv, bool first_prog_only)
goto err_close_obj;
}
- err = mount_bpffs_for_pin(pinfile);
+ err = mount_bpffs_for_pin(pinfile, !first_prog_only);
if (err)
goto err_close_obj;
diff --git a/tools/bpf/bpftool/struct_ops.c b/tools/bpf/bpftool/struct_ops.c
index 57c3da70aa31..3ebc9fe91e0e 100644
--- a/tools/bpf/bpftool/struct_ops.c
+++ b/tools/bpf/bpftool/struct_ops.c
@@ -509,7 +509,7 @@ static int do_register(int argc, char **argv)
if (argc == 1)
linkdir = GET_ARG();
- if (linkdir && mount_bpffs_for_pin(linkdir)) {
+ if (linkdir && mount_bpffs_for_pin(linkdir, true)) {
p_err("can't mount bpffs for pinning");
return -1;
}
--
2.38.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v2 bpf-next] bpftool: Support bpffs mountpoint as pin path for prog loadall
2023-05-06 3:07 [PATCH v2 bpf-next] bpftool: Support bpffs mountpoint as pin path for prog loadall Pengcheng Yang
@ 2023-05-09 8:18 ` Quentin Monnet
2023-05-17 14:10 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Quentin Monnet @ 2023-05-09 8:18 UTC (permalink / raw)
To: Pengcheng Yang, Alexei Starovoitov, Daniel Borkmann,
Andrii Nakryiko, Song Liu, Stanislav Fomichev
Cc: bpf
2023-05-06 11:07 UTC+0800 ~ Pengcheng Yang <yangpc@wangsu.com>
> Currently, when using prog loadall, if the pin path is a bpffs
> mountpoint, bpffs will be repeatedly mounted to the parent directory
> of the bpffs mountpoint path.
>
> For example,
> $ bpftool prog loadall test.o /sys/fs/bpf
> currently bpffs will be repeatedly mounted to /sys/fs.
>
> Signed-off-by: Pengcheng Yang <yangpc@wangsu.com>
Reviewed-by: Quentin Monnet <quentin@isovalent.com>
Thanks!
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2 bpf-next] bpftool: Support bpffs mountpoint as pin path for prog loadall
2023-05-06 3:07 [PATCH v2 bpf-next] bpftool: Support bpffs mountpoint as pin path for prog loadall Pengcheng Yang
2023-05-09 8:18 ` Quentin Monnet
@ 2023-05-17 14:10 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-05-17 14:10 UTC (permalink / raw)
To: Pengcheng Yang; +Cc: quentin, ast, daniel, andrii, song, sdf, bpf
Hello:
This patch was applied to bpf/bpf-next.git (master)
by Daniel Borkmann <daniel@iogearbox.net>:
On Sat, 6 May 2023 11:07:19 +0800 you wrote:
> Currently, when using prog loadall, if the pin path is a bpffs
> mountpoint, bpffs will be repeatedly mounted to the parent directory
> of the bpffs mountpoint path.
>
> For example,
> $ bpftool prog loadall test.o /sys/fs/bpf
> currently bpffs will be repeatedly mounted to /sys/fs.
>
> [...]
Here is the summary with links:
- [v2,bpf-next] bpftool: Support bpffs mountpoint as pin path for prog loadall
https://git.kernel.org/bpf/bpf-next/c/2a36c26fe3b8
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-05-17 14:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-06 3:07 [PATCH v2 bpf-next] bpftool: Support bpffs mountpoint as pin path for prog loadall Pengcheng Yang
2023-05-09 8:18 ` Quentin Monnet
2023-05-17 14:10 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox