Thread (97 messages) 97 messages, 7 authors, 2025-09-04

Re: [PATCH 4/9] mm, swap: tidy up swap device and cluster info helpers

From: David Hildenbrand <hidden>
Date: 2025-09-03 08:11:11
Also in: lkml

On 02.09.25 17:03, Kairui Song wrote:
On Tue, Sep 2, 2025 at 10:14 PM David Hildenbrand [off-list ref] wrote:
quoted
On 22.08.25 21:20, Kairui Song wrote:
quoted
From: Kairui Song <kasong@tencent.com>

swp_swap_info is the most commonly used helper for retrieving swap info.
It has an internal check that may lead to a NULL return value, but
almost none of its caller checks the return value, making the internal
check pointless. In fact, most of these callers already ensured the
entry is valid and never expect a NULL value.

Tidy this up and shorten the name.
Shorter != better. But yes, "swp_swap" was a mess.
quoted
If the caller can make sure the
swap entry/type is valid and the device is pinned, use the new introduced
swp_info/swp_type_info instead. They have more debug sanity checks and
lower overhead as they are inlined.

Callers that may expect a NULL value should use
swp_get_info/swp_type_get_info instead.
High-level comments:

1) I hate the "swp" vs. "swap". Is that a valuable distinction or could
we just convert it to "swap" as we touch it?
Totally agree. I was just blindly following the old style. It's kind
of confusing indeed.
... and not a lot of space saved :)
quoted
You're converting swap_type_to_swap_info() to swp_type_to_swap_info(),
and I am not sure if that is the right direction :)


2) Can we just call it "swap_entry" when we work on a swap entry and
"swap_type" when we work on a swap type in the function name?

swp_info() is a rather bad function name.


3) I am not sure about "to" -> "get". "to" is much more readable in that
context and consistent.


4) swp_info[] vs. swap_info() gah.


I would just have done:

swap_type_to_info(int type)
__swap_type_to_info(int type)
swap_entry_to_info(swp_entry_t entry)
__swap_entry_to_info(swp_entry_t entry)

__ are the expert functions where we don't expect NULL.
Thanks a lot for the suggestions! I also like the idea of using "__"
to seperate the non-NULL version a lot and implis the caller have to
careful.
Right, it's the "pro" version :)
My concern was that names will be getting very long in later commits
following this convention. Which is also the reason I want to shorten
them here.

A lot of SWAP relate operations will be cluster based, so it will be
very common to get offset or the swap cluster from a swap entry.
We will end up having a really long name like
__swap_entry_to_cluster_offset (convert swap entry to offset inside a
cluster).
That's a perfectly fine length though :)
Since we already have the swap entry type called `swp_entry_t` and
helprs like `swp_offset` and 'swp_swap_info' that convert an entry to
other swap things, so I thought that anything converts swap entry /
offset to others are named `swp_*`.
Yeah, I think that's just bad historical baggage we should clean up at 
some point.
Maybe a bad practise here, we can fix it while at it, or at least no
longer introduce more confusing names.

I can follow this suggested style, will it be a good idea if we have
following set of helpers?

For swap cluster and swap device (swap_info_struct):
swap_type_to_info(int)
__swap_type_to_info(int)
swap_entry_to_info(swp_entry_t)
__swap_entry_to_info(swp_entry_t)
__swap_offset_to_cluster(struct swap_info_struct *, pgoff_t)
__swap_entry_to_cluster(swp_entry_t)
Looks great to me, but let's hear other opinions.
And for offsets, we still use:
swp_offset() (Existing helper)
Yeah, there's also "swp_type" and "swp_offset_pfn". They really only 
extract basic properties of the entry, so they are a bit special.

I think we should call them "swap_entry_offset" "swap_entry_type" 
"swap_entry_pfn".

Now, that's not something I would expect in your series.
swp_cluster_offset()
That one could later become swap_entry_cluster_offset()
Now all swp_* helpers are pure arithmetic operations (we just renamed
swp_swap_info which seems the only exception). Is this better?
I'm already happy once we name+document the new functions properly.

I could probably live with "swp_cluster_offset" for the time being :)

-- 
Cheers

David / dhildenb

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help