From: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
To: Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>
Cc: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>,
Jakub Kicinski <jakub.kicinski@netronome.com>,
Quentin Monnet <quentin.monnet@netronome.com>,
"David S . Miller" <davem@davemloft.net>,
netdev@vger.kernel.org
Subject: [RFC bpf-next 0/4] Error handling when map lookup isn't supported
Date: Wed, 19 Sep 2018 16:51:39 +0900 [thread overview]
Message-ID: <20180919075143.9308-1-bhole_prashant_q7@lab.ntt.co.jp> (raw)
Currently when map a lookup is failed, user space API can not make any
distinction whether given key was not found or lookup is not supported
by particular map.
In this series we modify return value of maps which do not support
lookup. Lookup on such map implementation will return -EOPNOTSUPP.
bpf() syscall with BPF_MAP_LOOKUP_ELEM command will set EOPNOTSUPP
errno. We also handle this error in bpftool to print appropriate
message.
Patch 1: adds handling of BPF_MAP_LOOKUP ELEM command of bpf syscall
such that errno will set to EOPNOTSUPP when map doesn't support lookup
Patch 2: Modifies the return value of map_lookup_elem() to EOPNOTSUPP
for maps which do not support lookup
Patch 3: Splits do_dump() in bpftool/map.c. Element printing code is
moved out into new function dump_map_elem(). This was done in order to
reduce deep indentation and accomodate further changes.
Patch 4: Changes to bpftool to do additional checking for errno when
map lookup is failed. In case of EOPNOTSUPP errno, it prints message
"lookup not supported for this map"
Prashant Bhole (4):
bpf: error handling when map_lookup_elem isn't supported
bpf: return EOPNOTSUPP when map lookup isn't supported
tools/bpf: bpftool, split the function do_dump()
tools/bpf: handle EOPNOTSUPP when map lookup is failed
kernel/bpf/arraymap.c | 2 +-
kernel/bpf/sockmap.c | 2 +-
kernel/bpf/stackmap.c | 2 +-
kernel/bpf/syscall.c | 9 +++-
kernel/bpf/xskmap.c | 2 +-
tools/bpf/bpftool/main.h | 5 ++
tools/bpf/bpftool/map.c | 108 +++++++++++++++++++++++++++------------
7 files changed, 90 insertions(+), 40 deletions(-)
--
2.17.1
next reply other threads:[~2018-09-19 13:29 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-19 7:51 Prashant Bhole [this message]
2018-09-19 7:51 ` [RFC bpf-next 1/4] bpf: error handling when map_lookup_elem isn't supported Prashant Bhole
2018-09-19 7:51 ` [RFC bpf-next 2/4] bpf: return EOPNOTSUPP when map lookup " Prashant Bhole
2018-09-19 15:14 ` Alexei Starovoitov
2018-09-19 18:40 ` Mauricio Vasquez
2018-09-20 2:34 ` Prashant Bhole
2018-09-20 2:44 ` Prashant Bhole
2018-09-19 7:51 ` [RFC bpf-next 3/4] tools/bpf: bpftool, split the function do_dump() Prashant Bhole
2018-09-19 15:26 ` Jakub Kicinski
2018-09-20 2:49 ` Prashant Bhole
2018-09-19 7:51 ` [RFC bpf-next 4/4] tools/bpf: handle EOPNOTSUPP when map lookup is failed Prashant Bhole
2018-09-19 15:29 ` Jakub Kicinski
2018-09-20 2:58 ` Prashant Bhole
2018-09-20 5:04 ` Prashant Bhole
2018-09-20 15:59 ` Jakub Kicinski
2018-10-02 5:33 ` Prashant Bhole
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=20180919075143.9308-1-bhole_prashant_q7@lab.ntt.co.jp \
--to=bhole_prashant_q7@lab.ntt.co.jp \
--cc=ast@kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=jakub.kicinski@netronome.com \
--cc=netdev@vger.kernel.org \
--cc=quentin.monnet@netronome.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox