From: Nikolay Aleksandrov <nikolay-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Thomas Graf <tgraf-G/eBtMaohhA@public.gmane.org>,
davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org,
netfilter-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
tklauser-93Khv+1bN0NyDzI6CaY1VQ@public.gmane.org,
paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org,
kaber-dcUjhNyLwpNeoWH0uzbU5w@public.gmane.org,
walpole-sKt6ljEC1JY3uPMLIKxrzw@public.gmane.org
Subject: Re: [PATCH net-next 3/3] nftables: Convert nft_hash to use generic rhashtable
Date: Fri, 01 Aug 2014 14:21:31 +0200 [thread overview]
Message-ID: <53DB864B.2070205@redhat.com> (raw)
In-Reply-To: <bd4d9fa542072358cb0bd77e493ec5785a1d9666.1406891028.git.tgraf-G/eBtMaohhA@public.gmane.org>
On 08/01/2014 01:58 PM, Thomas Graf wrote:
> The sizing of the hash table and the practice of requiring a lookup
> to retrieve the pprev to be stored in the element cookie before the
> deletion of an entry is left intact.
>
> Signed-off-by: Thomas Graf <tgraf-G/eBtMaohhA@public.gmane.org>
> Acked-by: Patrick McHardy <kaber-dcUjhNyLwpNeoWH0uzbU5w@public.gmane.org>
> ---
<<snip>>
> @@ -257,36 +82,28 @@ static void nft_hash_elem_destroy(const struct nft_set *set,
> static void nft_hash_remove(const struct nft_set *set,
> const struct nft_set_elem *elem)
> {
> - struct nft_hash *priv = nft_set_priv(set);
> - struct nft_hash_table *tbl = nft_dereference(priv->tbl);
> - struct nft_hash_elem *he, __rcu **pprev;
> + struct rhashtable *priv = nft_set_priv(set);
> + struct rhash_head *he, __rcu **pprev;
>
> pprev = elem->cookie;
> - he = nft_dereference((*pprev));
> -
> - RCU_INIT_POINTER(*pprev, he->next);
> - synchronize_rcu();
> - kfree(he);
> + he = rht_dereference((*pprev), priv);
>
> - /* Shrink table beneath 30% load */
> - if (set->nelems - 1 < tbl->size * 3 / 10 &&
> - tbl->size > NFT_HASH_MIN_SIZE)
> - nft_hash_tbl_shrink(set, priv);
> + rhashtable_remove_pprev(priv, he, pprev, GFP_KERNEL);
> }
<<snip>>
Hi again,
Sorry for the late response but I just got around to check the 3rd patch now,
so my question about this fragment is: before nft_hash_remove() would free the
element after removal, but after this change I don't see where and when the
removed element would get freed ?
Nik
WARNING: multiple messages have this Message-ID (diff)
From: Nikolay Aleksandrov <nikolay@redhat.com>
To: Thomas Graf <tgraf@suug.ch>, davem@davemloft.net, netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kaber@trash.net,
paulmck@linux.vnet.ibm.com, josh@joshtriplett.org,
challa@noironetworks.com, walpole@cs.pdx.edu,
dev@openvswitch.org, tklauser@distanz.ch,
netfilter-devel@vger.kernel.org
Subject: Re: [PATCH net-next 3/3] nftables: Convert nft_hash to use generic rhashtable
Date: Fri, 01 Aug 2014 14:21:31 +0200 [thread overview]
Message-ID: <53DB864B.2070205@redhat.com> (raw)
In-Reply-To: <bd4d9fa542072358cb0bd77e493ec5785a1d9666.1406891028.git.tgraf@suug.ch>
On 08/01/2014 01:58 PM, Thomas Graf wrote:
> The sizing of the hash table and the practice of requiring a lookup
> to retrieve the pprev to be stored in the element cookie before the
> deletion of an entry is left intact.
>
> Signed-off-by: Thomas Graf <tgraf@suug.ch>
> Acked-by: Patrick McHardy <kaber@trash.net>
> ---
<<snip>>
> @@ -257,36 +82,28 @@ static void nft_hash_elem_destroy(const struct nft_set *set,
> static void nft_hash_remove(const struct nft_set *set,
> const struct nft_set_elem *elem)
> {
> - struct nft_hash *priv = nft_set_priv(set);
> - struct nft_hash_table *tbl = nft_dereference(priv->tbl);
> - struct nft_hash_elem *he, __rcu **pprev;
> + struct rhashtable *priv = nft_set_priv(set);
> + struct rhash_head *he, __rcu **pprev;
>
> pprev = elem->cookie;
> - he = nft_dereference((*pprev));
> -
> - RCU_INIT_POINTER(*pprev, he->next);
> - synchronize_rcu();
> - kfree(he);
> + he = rht_dereference((*pprev), priv);
>
> - /* Shrink table beneath 30% load */
> - if (set->nelems - 1 < tbl->size * 3 / 10 &&
> - tbl->size > NFT_HASH_MIN_SIZE)
> - nft_hash_tbl_shrink(set, priv);
> + rhashtable_remove_pprev(priv, he, pprev, GFP_KERNEL);
> }
<<snip>>
Hi again,
Sorry for the late response but I just got around to check the 3rd patch now,
so my question about this fragment is: before nft_hash_remove() would free the
element after removal, but after this change I don't see where and when the
removed element would get freed ?
Nik
next prev parent reply other threads:[~2014-08-01 12:21 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-01 11:58 [PATCH net-next v4 0/3] Lockless netlink_lookup() with new concurrent hash table Thomas Graf
2014-08-01 11:58 ` Thomas Graf
[not found] ` <cover.1406891028.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-01 11:58 ` [PATCH net-next 1/3] lib: Resizable, Scalable, Concurrent Hash Table Thomas Graf
2014-08-01 11:58 ` Thomas Graf
2014-08-01 11:58 ` [PATCH net-next 2/3] netlink: Convert netlink_lookup() to use RCU protected hash table Thomas Graf
2014-08-01 11:58 ` Thomas Graf
[not found] ` <72a64dfee4f20f2ca596df26f3e4ae543cf4c068.1406891028.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-01 14:51 ` Nikolay Aleksandrov
2014-08-01 14:51 ` Nikolay Aleksandrov
[not found] ` <53DBA976.8030103-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-08-01 15:15 ` Thomas Graf
2014-08-01 15:15 ` Thomas Graf
[not found] ` <20140801151527.GF7331-FZi0V3Vbi30CUdFEqe4BF2D2FQJk+8+b@public.gmane.org>
2014-08-01 15:20 ` Nikolay Aleksandrov
2014-08-01 15:20 ` Nikolay Aleksandrov
2014-08-01 11:58 ` [PATCH net-next 3/3] nftables: Convert nft_hash to use generic rhashtable Thomas Graf
[not found] ` <bd4d9fa542072358cb0bd77e493ec5785a1d9666.1406891028.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-01 12:21 ` Nikolay Aleksandrov [this message]
2014-08-01 12:21 ` Nikolay Aleksandrov
2014-08-01 13:49 ` Thomas Graf
2014-08-01 14:12 ` Patrick McHardy
2014-08-01 14:51 ` Thomas Graf
2014-08-01 15:00 ` Patrick McHardy
-- strict thread matches above, loose matches on Subject: below --
2014-08-02 9:47 [PATCH net-next v5 0/3] Lockless netlink_lookup() with new concurrent hash table Thomas Graf
2014-08-02 9:47 ` [PATCH net-next 3/3] nftables: Convert nft_hash to use generic rhashtable Thomas Graf
[not found] ` <583cb5fc8f1bc2f47d338dfba06f514e7b89a548.1406971567.git.tgraf-G/eBtMaohhA@public.gmane.org>
2014-08-02 10:56 ` Nikolay Aleksandrov
2014-08-02 10:56 ` Nikolay Aleksandrov
2014-08-01 8:51 [PATCH net-next v3 0/3] Lockless netlink_lookup() with new concurrent hash table Thomas Graf
2014-08-01 8:52 ` [PATCH net-next 3/3] nftables: Convert nft_hash to use generic rhashtable Thomas Graf
2014-08-01 10:17 ` Patrick McHardy
[not found] ` <970429e5-2465-40f2-998b-b82dab3debe8-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2014-08-01 10:39 ` Thomas Graf
2014-08-01 10:39 ` Thomas Graf
[not found] ` <20140801103901.GC7331-FZi0V3Vbi30CUdFEqe4BF2D2FQJk+8+b@public.gmane.org>
2014-08-01 10:47 ` Patrick McHardy
2014-08-01 10:47 ` Patrick McHardy
2014-07-31 22:56 [PATCH v2 0/3 net-next] Lockless netlink_lookup() with new concurrent hash table Thomas Graf
2014-07-31 22:56 ` [PATCH net-next 3/3] nftables: Convert nft_hash to use generic rhashtable Thomas Graf
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=53DB864B.2070205@redhat.com \
--to=nikolay-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
--cc=dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org \
--cc=josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org \
--cc=kaber-dcUjhNyLwpNeoWH0uzbU5w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=netfilter-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
--cc=tgraf-G/eBtMaohhA@public.gmane.org \
--cc=tklauser-93Khv+1bN0NyDzI6CaY1VQ@public.gmane.org \
--cc=walpole-sKt6ljEC1JY3uPMLIKxrzw@public.gmane.org \
/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.