From: Leon Romanovsky <leon@kernel.org>
To: Steve Wise <swise@opengridcomputing.com>
Cc: dsahern@gmail.com, stephen@networkplumber.org,
netdev@vger.kernel.org, linux-rdma@vger.kernel.org
Subject: Re: [PATCH v1 iproute2-next 1/4] rdma: add helper rd_sendrecv_msg()
Date: Thu, 7 Mar 2019 10:33:02 +0200 [thread overview]
Message-ID: <20190307083302.GM1789@mtr-leonro.mtl.com> (raw)
In-Reply-To: <b487f61e-d9a7-0151-51f5-25f79597a2fa@opengridcomputing.com>
[-- Attachment #1: Type: text/plain, Size: 4121 bytes --]
On Wed, Mar 06, 2019 at 03:50:13PM -0600, Steve Wise wrote:
>
> On 3/4/2019 8:13 AM, Steve Wise wrote:
> > Hey Leon, adding this to rd_recv_msg():
> >
> > @@ -693,10 +693,28 @@ int rd_recv_msg(struct rd *rd, mnl_cb_t callback, void
> > *data, unsigned int seq)
> > ret = mnl_cb_run(buf, ret, seq, portid, callback, data);
> > } while (ret > 0);
> >
> > + if (ret < 0)
> > + perror(NULL);
> > +
> > mnl_socket_close(rd->nl);
> > return ret;
> > }
> >
> > Results in unexpected errors being logged when doing a query such as:
> >
> > [root@stevo1 iproute2]# ./rdma/rdma res show qp lqpn 176
> > error: Invalid argument
> > link mlx5_0/1 lqpn 176 type UD state RTS sq-psn 0 comm [ib_core]
> > error: Invalid argument
> > error: No such file or directory
> > error: Invalid argument
> > error: No such file or directory
> >
> > It appears the "invalid argument" errors are due to rdmatool sending a
> > RDMA_NLDEV_CMD_RES_QP_GET command using the doit kernel method to allow
> > querying for just a QP with lqpn = 176. However, rdmatool isn't passing a
> > port index in the messages that generate the "invalid argument" error from
> > the kernel. IE you must provide a device index and port index when issuing
> > a doit command vs a dumpit command. I think.
QPs are per-device and not per-port, so I can't issue "real" port on
multi-port devices.
> >
> > This error was not found because rd_recv_msg() never displayed any errors
> > previously. Further, the RES_FUNC() massive macro has code that will retry
> > a failed doit call with a dumpit call. I think _##name() should distinguish
> > between failures reported by the kernel doit function vs failures because no
> > doit function exists. Not sure how to support that.
We can suppress prints from failures to find .doit, by adding extra
parameter to _res_send_idx_msg(): for example _res_send_idx_msg(..., no_error_print);
and provide this "no_error_print" to rd_recv_msg(), through "void
*data".
> >
> >
> > static inline int _##name(struct rd *rd)
> > \
> > {
> > \
> > uint32_t idx;
> > \
> > int ret;
> > \
> > if (id) {
> > \
> > ret = rd_doit_index(rd, &idx);
> > \
> > if (ret) {
> > \
> > ret = _res_send_idx_msg(rd, command,
> > \
> > name##_idx_parse_cb,
> > \
> > idx, id);
> > \
> > if (!ret)
> > \
> > return ret;
> > \
> > /* Fallback for old systems without .doit
> > callbacks */ \
> > }
> > \
> > }
> > \
> > return _res_send_msg(rd, command, name##_parse_cb);
> > \
> > }
> > \
> >
> >
> >
> > The "no such file or dir" errors are being returned because, in my setup,
> > there are 2 other links that do not have lqpn 176. So there are 2 issues
> > uncovered by adding generic printing of errors in rd_recv_msg()
> >
> > 1) the doit code in rdmatool is generating requests for a doit method in the
> > kernel w/o providing a port index.
> > 2) some paths in rdmatool should not print "benign" errors like filtering on
> > a GET command causing a "does not exist" error returned by the kernel doit
> > func.
> >
> > #1 is a bug, IMO. Can you propose a fix?
> > #2 could be solved by adding an error callback func passed to rd_recv_msg().
> > Then the RES_FUNC() functions could parse errors like "no such file or dir"
> > when doing a filtered query and silently drop them. And functions like
> > dev_set_name() would display all errors returned because there are no
> > expected errors other than "success".
> >
> > Steve.
> >
>
> Hey Leon, you've been quiet. :) Thoughts?
I missed your email, sorry.
>
> Thanks,
>
> Steve.
>
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
next prev parent reply other threads:[~2019-03-07 8:33 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-21 18:22 [PATCH v1 iproute2-next 0/4] Dynamic rdma link creation Steve Wise
2019-02-21 16:19 ` [PATCH v1 iproute2-next 1/4] rdma: add helper rd_sendrecv_msg() Steve Wise
2019-02-23 9:26 ` Leon Romanovsky
2019-02-23 9:31 ` Leon Romanovsky
2019-02-26 17:19 ` Steve Wise
2019-02-26 19:16 ` Leon Romanovsky
2019-02-26 19:55 ` Steve Wise
2019-02-26 19:55 ` David Ahern
2019-02-26 17:13 ` Steve Wise
2019-02-27 20:23 ` Steve Wise
2019-03-03 13:50 ` Leon Romanovsky
2019-03-04 14:13 ` Steve Wise
2019-03-06 21:50 ` Steve Wise
2019-03-07 8:33 ` Leon Romanovsky [this message]
2019-02-28 19:41 ` Steve Wise
2019-02-28 19:56 ` Leon Romanovsky
2019-02-28 20:10 ` Steve Wise
2019-02-21 16:19 ` [PATCH v1 iproute2-next 2/4] Sync up rdma_netlink.h Steve Wise
2019-02-21 18:56 ` Stephen Hemminger
2019-02-21 22:10 ` Leon Romanovsky
2019-02-21 23:11 ` Jason Gunthorpe
2019-02-23 9:28 ` Leon Romanovsky
2019-02-26 17:15 ` Steve Wise
2019-02-21 16:19 ` [PATCH v1 iproute2-next 3/4] rdma: add 'link add/delete' commands Steve Wise
2019-02-21 23:14 ` Jason Gunthorpe
2019-02-23 9:43 ` Leon Romanovsky
2019-02-26 17:24 ` Steve Wise
2019-02-27 21:18 ` Steve Wise
2019-02-21 16:19 ` [PATCH v1 iproute2-next 4/4] rdma: man page update for link add/delete Steve Wise
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=20190307083302.GM1789@mtr-leonro.mtl.com \
--to=leon@kernel.org \
--cc=dsahern@gmail.com \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.org \
--cc=swise@opengridcomputing.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