2024-01-03 09:03:07

by Pierre Gondois

[permalink] [raw]
Subject: [PATCH] list: Add hlist_count_nodes()

Add a function to count nodes in a hlist. hlist_count_nodes()
is similar to list_count_nodes().

Signed-off-by: Pierre Gondois <[email protected]>
---
include/linux/list.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)

diff --git a/include/linux/list.h b/include/linux/list.h
index 1837caedf723..0f1b1d4a2e2e 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -1175,4 +1175,19 @@ static inline void hlist_move_list(struct hlist_head *old,
pos && ({ n = pos->member.next; 1; }); \
pos = hlist_entry_safe(n, typeof(*pos), member))

+/**
+ * hlist_count_nodes - count nodes in the hlist
+ * @head: the head for your hlist.
+ */
+static inline size_t hlist_count_nodes(struct hlist_head *head)
+{
+ struct hlist_node *pos;
+ size_t count = 0;
+
+ hlist_for_each(pos, head)
+ count++;
+
+ return count;
+}
+
#endif
--
2.25.1



2024-01-03 11:26:42

by Marco Elver

[permalink] [raw]
Subject: Re: [PATCH] list: Add hlist_count_nodes()

On Wed, 3 Jan 2024 at 10:02, Pierre Gondois <[email protected]> wrote:
>
> Add a function to count nodes in a hlist. hlist_count_nodes()
> is similar to list_count_nodes().
>
> Signed-off-by: Pierre Gondois <[email protected]>

Is this patch part of another patch series? As-is, this will be dead
code, and there's no guarantee someone will just go and delete it in
future. Although this function looks useful, we also should avoid
adding new dead code.

> ---
> include/linux/list.h | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/include/linux/list.h b/include/linux/list.h
> index 1837caedf723..0f1b1d4a2e2e 100644
> --- a/include/linux/list.h
> +++ b/include/linux/list.h
> @@ -1175,4 +1175,19 @@ static inline void hlist_move_list(struct hlist_head *old,
> pos && ({ n = pos->member.next; 1; }); \
> pos = hlist_entry_safe(n, typeof(*pos), member))
>
> +/**
> + * hlist_count_nodes - count nodes in the hlist
> + * @head: the head for your hlist.
> + */
> +static inline size_t hlist_count_nodes(struct hlist_head *head)
> +{
> + struct hlist_node *pos;
> + size_t count = 0;
> +
> + hlist_for_each(pos, head)
> + count++;
> +
> + return count;
> +}
> +
> #endif
> --
> 2.25.1
>

2024-01-03 12:04:25

by Pierre Gondois

[permalink] [raw]
Subject: Re: [PATCH] list: Add hlist_count_nodes()

Hello Marco,

On 1/3/24 12:25, Marco Elver wrote:
> On Wed, 3 Jan 2024 at 10:02, Pierre Gondois <[email protected]> wrote:
>>
>> Add a function to count nodes in a hlist. hlist_count_nodes()
>> is similar to list_count_nodes().
>>
>> Signed-off-by: Pierre Gondois <[email protected]>
>
> Is this patch part of another patch series? As-is, this will be dead
> code, and there's no guarantee someone will just go and delete it in
> future. Although this function looks useful, we also should avoid
> adding new dead code.

The function is indeed not used in the project right now. I needed
it for a private module. If it helps integrating the function and
not make it dead code, maybe I could add usages at the following
places:
- drivers/gpu/drm/drm_hashtab.c::print_binder_node_nilocked()
- drivers/md/bcache/sysfs.c::bch_cache_max_chain()

Regards,
Pierre

>
>> ---
>> include/linux/list.h | 15 +++++++++++++++
>> 1 file changed, 15 insertions(+)
>>
>> diff --git a/include/linux/list.h b/include/linux/list.h
>> index 1837caedf723..0f1b1d4a2e2e 100644
>> --- a/include/linux/list.h
>> +++ b/include/linux/list.h
>> @@ -1175,4 +1175,19 @@ static inline void hlist_move_list(struct hlist_head *old,
>> pos && ({ n = pos->member.next; 1; }); \
>> pos = hlist_entry_safe(n, typeof(*pos), member))
>>
>> +/**
>> + * hlist_count_nodes - count nodes in the hlist
>> + * @head: the head for your hlist.
>> + */
>> +static inline size_t hlist_count_nodes(struct hlist_head *head)
>> +{
>> + struct hlist_node *pos;
>> + size_t count = 0;
>> +
>> + hlist_for_each(pos, head)
>> + count++;
>> +
>> + return count;
>> +}
>> +
>> #endif
>> --
>> 2.25.1
>>

2024-01-03 13:46:48

by Marco Elver

[permalink] [raw]
Subject: Re: [PATCH] list: Add hlist_count_nodes()

On Wed, 3 Jan 2024 at 13:04, Pierre Gondois <[email protected]> wrote:
>
> Hello Marco,
>
> On 1/3/24 12:25, Marco Elver wrote:
> > On Wed, 3 Jan 2024 at 10:02, Pierre Gondois <[email protected]> wrote:
> >>
> >> Add a function to count nodes in a hlist. hlist_count_nodes()
> >> is similar to list_count_nodes().
> >>
> >> Signed-off-by: Pierre Gondois <[email protected]>
> >
> > Is this patch part of another patch series? As-is, this will be dead
> > code, and there's no guarantee someone will just go and delete it in
> > future. Although this function looks useful, we also should avoid
> > adding new dead code.
>
> The function is indeed not used in the project right now. I needed
> it for a private module. If it helps integrating the function and
> not make it dead code, maybe I could add usages at the following
> places:
> - drivers/gpu/drm/drm_hashtab.c::print_binder_node_nilocked()
> - drivers/md/bcache/sysfs.c::bch_cache_max_chain()

If this function allows to simplify these other places, by all means
go ahead. That would look a lot better than having an unused function.

Thanks,
-- Marco

2024-01-06 14:18:34

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH] list: Add hlist_count_nodes()

On Wed, Jan 03, 2024 at 02:46:00PM +0100, Marco Elver wrote:
> On Wed, 3 Jan 2024 at 13:04, Pierre Gondois <[email protected]> wrote:
> > On 1/3/24 12:25, Marco Elver wrote:
> > > On Wed, 3 Jan 2024 at 10:02, Pierre Gondois <[email protected]> wrote:
> > >>
> > >> Add a function to count nodes in a hlist. hlist_count_nodes()
> > >> is similar to list_count_nodes().
> > >>
> > >> Signed-off-by: Pierre Gondois <[email protected]>
> > >
> > > Is this patch part of another patch series? As-is, this will be dead
> > > code, and there's no guarantee someone will just go and delete it in
> > > future. Although this function looks useful, we also should avoid
> > > adding new dead code.
> >
> > The function is indeed not used in the project right now. I needed
> > it for a private module. If it helps integrating the function and
> > not make it dead code, maybe I could add usages at the following
> > places:
> > - drivers/gpu/drm/drm_hashtab.c::print_binder_node_nilocked()
> > - drivers/md/bcache/sysfs.c::bch_cache_max_chain()
>
> If this function allows to simplify these other places, by all means
> go ahead. That would look a lot better than having an unused function.

+1, produce a little series with those drivers being cleaned up.

--
With Best Regards,
Andy Shevchenko