* [PATCH] mm/shmem: remove redundant entry_order variable in shmem_split_large_entry()
@ 2025-09-08 2:39 Jackie Liu
2025-09-08 2:39 ` Jackie Liu
0 siblings, 1 reply; 4+ messages in thread
From: Jackie Liu @ 2025-09-08 2:39 UTC (permalink / raw)
To: linux-mm, akpm; +Cc: hughd, baolin.wang, liu.yun, liuyun01
From: Jackie Liu <liuyun01@kylinos.cn>
Commit d53c78fffe7a ("mm/shmem: use xas_try_split() in shmem_split_large_entry()")
reworked shmem_split_large_entry() to use xas_try_split() and simplified
the splitting logic. After that change, the local variable `entry_order`
became redundant since its value was always immediately copied to `cur_order`.
Remove `entry_order` and use `cur_order` directly to simplify the code.
No functional change intended.
Signed-off-by: Jackie Liu <liuyun01@kylinos.cn>
---
mm/shmem.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/mm/shmem.c b/mm/shmem.c
index e2c76a30802b..53d28ea6e52b 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2235,7 +2235,7 @@ static int shmem_split_large_entry(struct inode *inode, pgoff_t index,
{
struct address_space *mapping = inode->i_mapping;
XA_STATE_ORDER(xas, &mapping->i_pages, index, 0);
- int split_order = 0, entry_order;
+ int split_order = 0;
int i;
/* Convert user data gfp flags to xarray node gfp flags */
@@ -2253,15 +2253,12 @@ static int shmem_split_large_entry(struct inode *inode, pgoff_t index,
goto unlock;
}
- entry_order = xas_get_order(&xas);
-
- if (!entry_order)
+ cur_order = xas_get_order(&xas);
+ if (!cur_order)
goto unlock;
/* Try to split large swap entry in pagecache */
- cur_order = entry_order;
- swap_index = round_down(index, 1 << entry_order);
-
+ swap_index = round_down(index, 1 << cur_order);
split_order = xas_try_split_min_order(cur_order);
while (cur_order > 0) {
--
2.51.0
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH] mm/shmem: remove redundant entry_order variable in shmem_split_large_entry()
2025-09-08 2:39 [PATCH] mm/shmem: remove redundant entry_order variable in shmem_split_large_entry() Jackie Liu
@ 2025-09-08 2:39 ` Jackie Liu
2025-09-08 6:05 ` Baolin Wang
0 siblings, 1 reply; 4+ messages in thread
From: Jackie Liu @ 2025-09-08 2:39 UTC (permalink / raw)
To: linux-mm, akpm; +Cc: hughd, baolin.wang, liu.yun, liuyun01
From: Jackie Liu <liuyun01@kylinos.cn>
Commit d53c78fffe7a ("mm/shmem: use xas_try_split() in shmem_split_large_entry()")
reworked shmem_split_large_entry() to use xas_try_split() and simplified
the splitting logic. After that change, the local variable `entry_order`
became redundant since its value was always immediately copied to `cur_order`.
Remove `entry_order` and use `cur_order` directly to simplify the code.
No functional change intended.
Signed-off-by: Jackie Liu <liuyun01@kylinos.cn>
---
mm/shmem.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/mm/shmem.c b/mm/shmem.c
index e2c76a30802b..53d28ea6e52b 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2235,7 +2235,7 @@ static int shmem_split_large_entry(struct inode *inode, pgoff_t index,
{
struct address_space *mapping = inode->i_mapping;
XA_STATE_ORDER(xas, &mapping->i_pages, index, 0);
- int split_order = 0, entry_order;
+ int split_order = 0;
int i;
/* Convert user data gfp flags to xarray node gfp flags */
@@ -2253,15 +2253,12 @@ static int shmem_split_large_entry(struct inode *inode, pgoff_t index,
goto unlock;
}
- entry_order = xas_get_order(&xas);
-
- if (!entry_order)
+ cur_order = xas_get_order(&xas);
+ if (!cur_order)
goto unlock;
/* Try to split large swap entry in pagecache */
- cur_order = entry_order;
- swap_index = round_down(index, 1 << entry_order);
-
+ swap_index = round_down(index, 1 << cur_order);
split_order = xas_try_split_min_order(cur_order);
while (cur_order > 0) {
--
2.51.0
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] mm/shmem: remove redundant entry_order variable in shmem_split_large_entry()
2025-09-08 2:39 ` Jackie Liu
@ 2025-09-08 6:05 ` Baolin Wang
2025-09-08 6:22 ` Jackie Liu
0 siblings, 1 reply; 4+ messages in thread
From: Baolin Wang @ 2025-09-08 6:05 UTC (permalink / raw)
To: Jackie Liu, linux-mm, akpm; +Cc: hughd, liuyun01
On 2025/9/8 10:39, Jackie Liu wrote:
> From: Jackie Liu <liuyun01@kylinos.cn>
>
> Commit d53c78fffe7a ("mm/shmem: use xas_try_split() in shmem_split_large_entry()")
> reworked shmem_split_large_entry() to use xas_try_split() and simplified
> the splitting logic. After that change, the local variable `entry_order`
> became redundant since its value was always immediately copied to `cur_order`.
> Remove `entry_order` and use `cur_order` directly to simplify the code.
The commit message is a bit misleading. It does not introduce a
redundant variable by commit d53c78fffe7a. Instead, it's because after
commit 93c0476e7057 ("mm/shmem, swap: rework swap entry and index
calculation for large swapin"), the 'entry_order' will never be returned.
> No functional change intended.
>
> Signed-off-by: Jackie Liu <liuyun01@kylinos.cn>
> ---
With the commit message updated:
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
> mm/shmem.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/mm/shmem.c b/mm/shmem.c
> index e2c76a30802b..53d28ea6e52b 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
> @@ -2235,7 +2235,7 @@ static int shmem_split_large_entry(struct inode *inode, pgoff_t index,
> {
> struct address_space *mapping = inode->i_mapping;
> XA_STATE_ORDER(xas, &mapping->i_pages, index, 0);
> - int split_order = 0, entry_order;
> + int split_order = 0;
> int i;
>
> /* Convert user data gfp flags to xarray node gfp flags */
> @@ -2253,15 +2253,12 @@ static int shmem_split_large_entry(struct inode *inode, pgoff_t index,
> goto unlock;
> }
>
> - entry_order = xas_get_order(&xas);
> -
> - if (!entry_order)
> + cur_order = xas_get_order(&xas);
> + if (!cur_order)
> goto unlock;
>
> /* Try to split large swap entry in pagecache */
> - cur_order = entry_order;
> - swap_index = round_down(index, 1 << entry_order);
> -
> + swap_index = round_down(index, 1 << cur_order);
> split_order = xas_try_split_min_order(cur_order);
>
> while (cur_order > 0) {
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] mm/shmem: remove redundant entry_order variable in shmem_split_large_entry()
2025-09-08 6:05 ` Baolin Wang
@ 2025-09-08 6:22 ` Jackie Liu
0 siblings, 0 replies; 4+ messages in thread
From: Jackie Liu @ 2025-09-08 6:22 UTC (permalink / raw)
To: Baolin Wang, linux-mm, akpm; +Cc: hughd, liuyun01
Hi Baolin.
2025年9月8日 14:05, "Baolin Wang" <baolin.wang@linux.alibaba.com mailto:baolin.wang@linux.alibaba.com?to=%22Baolin%20Wang%22%20%3Cbaolin.wang%40linux.alibaba.com%3E > 写到:
>
> On 2025/9/8 10:39, Jackie Liu wrote:
>
> >
> > From: Jackie Liu <liuyun01@kylinos.cn>
> > Commit d53c78fffe7a ("mm/shmem: use xas_try_split() in shmem_split_large_entry()")
> > reworked shmem_split_large_entry() to use xas_try_split() and simplified
> > the splitting logic. After that change, the local variable `entry_order`
> > became redundant since its value was always immediately copied to `cur_order`.
> > Remove `entry_order` and use `cur_order` directly to simplify the code.
> >
> The commit message is a bit misleading. It does not introduce a redundant variable by commit d53c78fffe7a. Instead, it's because after commit 93c0476e7057 ("mm/shmem, swap: rework swap entry and index calculation for large swapin"), the 'entry_order' will never be returned.
>
Aha, Thanks, you’re right. This is indeed the correct commit. When I applied this series of patches locally,
I accidentally used an earlier prerequisite patch. I made a mistake when copying it.
Thanks again—I’ll update the comment and resend version 2.
--
Jackie Liu
> >
> > No functional change intended.
> > Signed-off-by: Jackie Liu <liuyun01@kylinos.cn>
> > ---
> >
> With the commit message updated:
> Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
>
> >
> > mm/shmem.c | 11 ++++-------
> > 1 file changed, 4 insertions(+), 7 deletions(-)
> > diff --git a/mm/shmem.c b/mm/shmem.c
> > index e2c76a30802b..53d28ea6e52b 100644
> > --- a/mm/shmem.c
> > +++ b/mm/shmem.c
> > @@ -2235,7 +2235,7 @@ static int shmem_split_large_entry(struct inode *inode, pgoff_t index,
> > {
> > struct address_space *mapping = inode->i_mapping;
> > XA_STATE_ORDER(xas, &mapping->i_pages, index, 0);
> > - int split_order = 0, entry_order;
> > + int split_order = 0;
> > int i;
> > > /* Convert user data gfp flags to xarray node gfp flags */
> > @@ -2253,15 +2253,12 @@ static int shmem_split_large_entry(struct inode *inode, pgoff_t index,
> > goto unlock;
> > }
> > > - entry_order = xas_get_order(&xas);
> > -
> > - if (!entry_order)
> > + cur_order = xas_get_order(&xas);
> > + if (!cur_order)
> > goto unlock;
> > > /* Try to split large swap entry in pagecache */
> > - cur_order = entry_order;
> > - swap_index = round_down(index, 1 << entry_order);
> > -
> > + swap_index = round_down(index, 1 << cur_order);
> > split_order = xas_try_split_min_order(cur_order);
> > > while (cur_order > 0) {
> >
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-09-08 6:22 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-08 2:39 [PATCH] mm/shmem: remove redundant entry_order variable in shmem_split_large_entry() Jackie Liu
2025-09-08 2:39 ` Jackie Liu
2025-09-08 6:05 ` Baolin Wang
2025-09-08 6:22 ` Jackie Liu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox