Re: [PATCH v3 02/13] mm, swap: fold swap_info_get_cont in the only caller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/31/24 at 01:46am, Kairui Song wrote:
> From: Kairui Song <kasong@xxxxxxxxxxx>
> 
> The name of the function is confusing, and the code is much easier to
> follow after folding, also rename the confusing naming "p" to more
> meaningful "si".
> 
> Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> ---
>  mm/swapfile.c | 39 +++++++++++++++------------------------
>  1 file changed, 15 insertions(+), 24 deletions(-)

Reviewed-by: Baoquan He <bhe@xxxxxxxxxx>

> 
> diff --git a/mm/swapfile.c b/mm/swapfile.c
> index f8002f110104..574059158627 100644
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -1375,22 +1375,6 @@ static struct swap_info_struct *_swap_info_get(swp_entry_t entry)
>  	return NULL;
>  }
>  
> -static struct swap_info_struct *swap_info_get_cont(swp_entry_t entry,
> -					struct swap_info_struct *q)
> -{
> -	struct swap_info_struct *p;
> -
> -	p = _swap_info_get(entry);
> -
> -	if (p != q) {
> -		if (q != NULL)
> -			spin_unlock(&q->lock);
> -		if (p != NULL)
> -			spin_lock(&p->lock);
> -	}
> -	return p;
> -}
> -
>  static unsigned char __swap_entry_free_locked(struct swap_info_struct *si,
>  					      unsigned long offset,
>  					      unsigned char usage)
> @@ -1687,14 +1671,14 @@ static int swp_entry_cmp(const void *ent1, const void *ent2)
>  
>  void swapcache_free_entries(swp_entry_t *entries, int n)
>  {
> -	struct swap_info_struct *p, *prev;
> +	struct swap_info_struct *si, *prev;
>  	int i;
>  
>  	if (n <= 0)
>  		return;
>  
>  	prev = NULL;
> -	p = NULL;
> +	si = NULL;
>  
>  	/*
>  	 * Sort swap entries by swap device, so each lock is only taken once.
> @@ -1704,13 +1688,20 @@ void swapcache_free_entries(swp_entry_t *entries, int n)
>  	if (nr_swapfiles > 1)
>  		sort(entries, n, sizeof(entries[0]), swp_entry_cmp, NULL);
>  	for (i = 0; i < n; ++i) {
> -		p = swap_info_get_cont(entries[i], prev);
> -		if (p)
> -			swap_entry_range_free(p, entries[i], 1);
> -		prev = p;
> +		si = _swap_info_get(entries[i]);
> +
> +		if (si != prev) {
> +			if (prev != NULL)
> +				spin_unlock(&prev->lock);
> +			if (si != NULL)
> +				spin_lock(&si->lock);
> +		}
> +		if (si)
> +			swap_entry_range_free(si, entries[i], 1);
> +		prev = si;
>  	}
> -	if (p)
> -		spin_unlock(&p->lock);
> +	if (si)
> +		spin_unlock(&si->lock);
>  }
>  
>  int __swap_count(swp_entry_t entry)
> -- 
> 2.47.1
> 
> 





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux