From: Simon Horman <horms@kernel.org>
To: John Ousterhout <ouster@cs.stanford.edu>
Cc: netdev@vger.kernel.org, pabeni@redhat.com, edumazet@google.com,
kuba@kernel.org
Subject: Re: [PATCH net-next v9 06/15] net: homa: create homa_sock.h and homa_sock.c
Date: Fri, 13 Jun 2025 15:42:40 +0100 [thread overview]
Message-ID: <20250613144240.GK414686@horms.kernel.org> (raw)
In-Reply-To: <20250609154051.1319-7-ouster@cs.stanford.edu>
On Mon, Jun 09, 2025 at 08:40:39AM -0700, John Ousterhout wrote:
> These files provide functions for managing the state that Homa keeps
> for each open Homa socket.
>
> Signed-off-by: John Ousterhout <ouster@cs.stanford.edu>
...
> diff --git a/net/homa/homa_sock.h b/net/homa/homa_sock.h
...
> +/**
> + * struct homa_rpc_bucket - One bucket in a hash table of RPCs.
> + */
> +
> +struct homa_rpc_bucket {
> + /**
> + * @lock: serves as a lock both for this bucket (e.g., when
> + * adding and removing RPCs) and also for all of the RPCs in
> + * the bucket. Must be held whenever looking up an RPC in
> + * this bucket or manipulating an RPC in the bucket. This approach
> + * has the following properties:
> + * 1. An RPC can be looked up and locked (a common operation) with
> + * a single lock acquisition.
> + * 2. Looking up and locking are atomic: there is no window of
> + * vulnerability where someone else could delete an RPC after
> + * it has been looked up and before it has been locked.
> + * 3. The lookup mechanism does not use RCU. This is important because
> + * RPCs are created rapidly and typically live only a few tens of
> + * microseconds. As of May 2027 RCU introduces a lag of about
> + * 25 ms before objects can be deleted; for RPCs this would result
> + * in hundreds or thousands of RPCs accumulating before RCU allows
> + * them to be deleted.
> + * This approach has the disadvantage that RPCs within a bucket share
> + * locks and thus may not be able to work concurently, but there are
nit: concurrently
> + * enough buckets in the table to make such colllisions rare.
> + *
> + * See "Homa Locking Strategy" in homa_impl.h for more info about
> + * locking.
> + */
> + spinlock_t lock __context__(rpc_bucket_lock, 1, 1);
As per my comment on __context__ in reply to another patch in this series.
I am clear on the intent of using __context__ here. And it does not seem
to be a common construct within the Kernel. I suspect it would be best
to remove it.
> +
> + /**
> + * @id: identifier for this bucket, used in error messages etc.
> + * It's the index of the bucket within its hash table bucket
> + * array, with an additional offset to separate server and
> + * client RPCs.
> + */
> + int id;
> +
> + /** @rpcs: list of RPCs that hash to this bucket. */
> + struct hlist_head rpcs;
> +};
...
next prev parent reply other threads:[~2025-06-13 14:42 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-09 15:40 [PATCH net-next v9 00/15] Begin upstreaming Homa transport protocol John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 01/15] net: homa: define user-visible API for Homa John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 02/15] net: homa: create homa_wire.h John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 03/15] net: homa: create shared Homa header files John Ousterhout
2025-06-13 14:40 ` Simon Horman
2025-06-13 18:36 ` John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 04/15] net: homa: create homa_pool.h and homa_pool.c John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 05/15] net: homa: create homa_peer.h and homa_peer.c John Ousterhout
2025-06-13 14:39 ` Simon Horman
2025-06-13 17:12 ` John Ousterhout
2025-06-13 17:18 ` Simon Horman
2025-06-13 18:02 ` John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 06/15] net: homa: create homa_sock.h and homa_sock.c John Ousterhout
2025-06-13 14:42 ` Simon Horman [this message]
2025-06-13 18:47 ` John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 07/15] net: homa: create homa_interest.h and homa_interest John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 08/15] net: homa: create homa_pacer.h and homa_pacer.c John Ousterhout
2025-06-13 14:43 ` Simon Horman
2025-06-13 18:50 ` John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 09/15] net: homa: create homa_rpc.h and homa_rpc.c John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 10/15] net: homa: create homa_outgoing.c John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 11/15] net: homa: create homa_utils.c John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 12/15] net: homa: create homa_incoming.c John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 13/15] net: homa: create homa_timer.c John Ousterhout
2025-06-13 14:41 ` Simon Horman
2025-06-13 18:44 ` John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 14/15] net: homa: create homa_plumbing.c John Ousterhout
2025-06-09 15:40 ` [PATCH net-next v9 15/15] net: homa: create Makefile and Kconfig John Ousterhout
-- strict thread matches above, loose matches on Subject: below --
2025-05-26 4:28 [PATCH net-next v9 00/15] Begin upstreaming Homa transport protocol John Ousterhout
2025-05-26 4:28 ` [PATCH net-next v9 06/15] net: homa: create homa_sock.h and homa_sock.c John Ousterhout
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=20250613144240.GK414686@horms.kernel.org \
--to=horms@kernel.org \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=ouster@cs.stanford.edu \
--cc=pabeni@redhat.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.