All of lore.kernel.org
 help / color / mirror / Atom feed
From: sdf at google.com (Stanislav Fomichev)
Subject: [PATCH v5 bpf-next 3/7] libbpf: bpf_program__pin: add special case for instances.nr == 1
Date: Fri,  9 Nov 2018 08:21:42 -0800	[thread overview]
Message-ID: <20181109162146.78019-4-sdf@google.com> (raw)
In-Reply-To: <20181109162146.78019-1-sdf@google.com>

When bpf_program has only one instance, don't create a subdirectory with
per-instance pin files (<prog>/0). Instead, just create a single pin file
for that single instance. This simplifies object pinning by not creating
unnecessary subdirectories.

This can potentially break existing users that depend on the case
where '/0' is always created. However, I couldn't find any serious
usage of bpf_program__pin inside the kernel tree and I suppose there
should be none outside.

Signed-off-by: Stanislav Fomichev <sdf at google.com>
---
 tools/lib/bpf/libbpf.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 341008f47c8a..97ce9f214002 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -1761,6 +1761,11 @@ int bpf_program__pin(struct bpf_program *prog, const char *path)
 		return -EINVAL;
 	}
 
+	if (prog->instances.nr == 1) {
+		/* don't create subdirs when pinning single instance */
+		return bpf_program__pin_instance(prog, path, 0);
+	}
+
 	err = make_dir(path);
 	if (err)
 		return err;
@@ -1823,6 +1828,11 @@ int bpf_program__unpin(struct bpf_program *prog, const char *path)
 		return -EINVAL;
 	}
 
+	if (prog->instances.nr == 1) {
+		/* don't create subdirs when pinning single instance */
+		return bpf_program__unpin_instance(prog, path, 0);
+	}
+
 	for (i = 0; i < prog->instances.nr; i++) {
 		char buf[PATH_MAX];
 		int len;
-- 
2.19.1.930.g4563a0d9d0-goog

WARNING: multiple messages have this Message-ID (diff)
From: sdf@google.com (Stanislav Fomichev)
Subject: [PATCH v5 bpf-next 3/7] libbpf: bpf_program__pin: add special case for instances.nr == 1
Date: Fri,  9 Nov 2018 08:21:42 -0800	[thread overview]
Message-ID: <20181109162146.78019-4-sdf@google.com> (raw)
Message-ID: <20181109162142.in6L245C4UCbVAeZ9cyWacF6JnYIn5xO2cFsvEL5Nwo@z> (raw)
In-Reply-To: <20181109162146.78019-1-sdf@google.com>

When bpf_program has only one instance, don't create a subdirectory with
per-instance pin files (<prog>/0). Instead, just create a single pin file
for that single instance. This simplifies object pinning by not creating
unnecessary subdirectories.

This can potentially break existing users that depend on the case
where '/0' is always created. However, I couldn't find any serious
usage of bpf_program__pin inside the kernel tree and I suppose there
should be none outside.

Signed-off-by: Stanislav Fomichev <sdf at google.com>
---
 tools/lib/bpf/libbpf.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 341008f47c8a..97ce9f214002 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -1761,6 +1761,11 @@ int bpf_program__pin(struct bpf_program *prog, const char *path)
 		return -EINVAL;
 	}
 
+	if (prog->instances.nr == 1) {
+		/* don't create subdirs when pinning single instance */
+		return bpf_program__pin_instance(prog, path, 0);
+	}
+
 	err = make_dir(path);
 	if (err)
 		return err;
@@ -1823,6 +1828,11 @@ int bpf_program__unpin(struct bpf_program *prog, const char *path)
 		return -EINVAL;
 	}
 
+	if (prog->instances.nr == 1) {
+		/* don't create subdirs when pinning single instance */
+		return bpf_program__unpin_instance(prog, path, 0);
+	}
+
 	for (i = 0; i < prog->instances.nr; i++) {
 		char buf[PATH_MAX];
 		int len;
-- 
2.19.1.930.g4563a0d9d0-goog

WARNING: multiple messages have this Message-ID (diff)
From: Stanislav Fomichev <sdf@google.com>
To: netdev@vger.kernel.org, linux-kselftest@vger.kernel.org,
	ast@kernel.org, daniel@iogearbox.net, shuah@kernel.org,
	jakub.kicinski@netronome.com, quentin.monnet@netronome.com
Cc: guro@fb.com, jiong.wang@netronome.com, sdf@google.com,
	bhole_prashant_q7@lab.ntt.co.jp, john.fastabend@gmail.com,
	jbenc@redhat.com, treeze.taeung@gmail.com, yhs@fb.com,
	osk@fb.com, sandipan@linux.vnet.ibm.com
Subject: [PATCH v5 bpf-next 3/7] libbpf: bpf_program__pin: add special case for instances.nr == 1
Date: Fri,  9 Nov 2018 08:21:42 -0800	[thread overview]
Message-ID: <20181109162146.78019-4-sdf@google.com> (raw)
In-Reply-To: <20181109162146.78019-1-sdf@google.com>

When bpf_program has only one instance, don't create a subdirectory with
per-instance pin files (<prog>/0). Instead, just create a single pin file
for that single instance. This simplifies object pinning by not creating
unnecessary subdirectories.

This can potentially break existing users that depend on the case
where '/0' is always created. However, I couldn't find any serious
usage of bpf_program__pin inside the kernel tree and I suppose there
should be none outside.

Signed-off-by: Stanislav Fomichev <sdf@google.com>
---
 tools/lib/bpf/libbpf.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 341008f47c8a..97ce9f214002 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -1761,6 +1761,11 @@ int bpf_program__pin(struct bpf_program *prog, const char *path)
 		return -EINVAL;
 	}
 
+	if (prog->instances.nr == 1) {
+		/* don't create subdirs when pinning single instance */
+		return bpf_program__pin_instance(prog, path, 0);
+	}
+
 	err = make_dir(path);
 	if (err)
 		return err;
@@ -1823,6 +1828,11 @@ int bpf_program__unpin(struct bpf_program *prog, const char *path)
 		return -EINVAL;
 	}
 
+	if (prog->instances.nr == 1) {
+		/* don't create subdirs when pinning single instance */
+		return bpf_program__unpin_instance(prog, path, 0);
+	}
+
 	for (i = 0; i < prog->instances.nr; i++) {
 		char buf[PATH_MAX];
 		int len;
-- 
2.19.1.930.g4563a0d9d0-goog

  parent reply	other threads:[~2018-11-09 16:21 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-09 16:21 [PATCH v5 bpf-next 0/7] bpftool: support loading flow dissector sdf
2018-11-09 16:21 ` Stanislav Fomichev
2018-11-09 16:21 ` Stanislav Fomichev
2018-11-09 16:21 ` [PATCH v5 bpf-next 1/7] selftests/bpf: rename flow dissector section to flow_dissector sdf
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21 ` [PATCH v5 bpf-next 2/7] libbpf: cleanup after partial failure in bpf_object__pin sdf
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-12 21:53   ` kafai
2018-11-12 21:53     ` Martin Lau
2018-11-12 21:53     ` Martin Lau
2018-11-12 22:10     ` sdf
2018-11-12 22:10       ` Stanislav Fomichev
2018-11-12 22:10       ` Stanislav Fomichev
2018-11-12 23:10       ` kafai
2018-11-12 23:10         ` Martin Lau
2018-11-12 23:10         ` Martin Lau
2018-11-12 23:29         ` sdf
2018-11-12 23:29           ` Stanislav Fomichev
2018-11-12 23:29           ` Stanislav Fomichev
2018-11-12 23:41           ` kafai
2018-11-12 23:41             ` Martin Lau
2018-11-12 23:41             ` Martin Lau
2018-11-09 16:21 ` sdf [this message]
2018-11-09 16:21   ` [PATCH v5 bpf-next 3/7] libbpf: bpf_program__pin: add special case for instances.nr == 1 Stanislav Fomichev
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21 ` [PATCH v5 bpf-next 4/7] libbpf: add internal pin_name sdf
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21 ` [PATCH v5 bpf-next 5/7] bpftool: add loadall command sdf
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21 ` [PATCH v5 bpf-next 6/7] bpftool: add pinmaps argument to the load/loadall sdf
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21 ` [PATCH v5 bpf-next 7/7] bpftool: support loading flow dissector sdf
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 16:21   ` Stanislav Fomichev
2018-11-09 17:38 ` [PATCH v5 bpf-next 0/7] " quentin.monnet
2018-11-09 17:38   ` Quentin Monnet
2018-11-09 17:38   ` Quentin Monnet
2018-11-09 20:15 ` jakub.kicinski
2018-11-09 20:15   ` Jakub Kicinski
2018-11-09 20:15   ` Jakub Kicinski
2018-11-11  0:00   ` alexei.starovoitov
2018-11-11  0:00     ` Alexei Starovoitov
2018-11-11  0:00     ` Alexei Starovoitov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181109162146.78019-4-sdf@google.com \
    --to=unknown@example.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.