On Mon, 21 Sep 2020 08:22:24 -0400 Miaohe Lin <[email protected]> wrote:

> We could use helper memset to fill the swap_map with SWAP_HAS_CACHE instead
> of a direct loop here to simplify the code. Also we can remove the local
> variable i and map this way.
> 
> ...
>
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -975,8 +975,7 @@ static int swap_alloc_cluster(struct swap_info_struct 
> *si, swp_entry_t *slot)
>  {
>       unsigned long idx;
>       struct swap_cluster_info *ci;
> -     unsigned long offset, i;
> -     unsigned char *map;
> +     unsigned long offset;
>  
>       /*
>        * Should not even be attempting cluster allocations when huge
> @@ -996,9 +995,7 @@ static int swap_alloc_cluster(struct swap_info_struct 
> *si, swp_entry_t *slot)
>       alloc_cluster(si, idx);
>       cluster_set_count_flag(ci, SWAPFILE_CLUSTER, CLUSTER_FLAG_HUGE);
>  
> -     map = si->swap_map + offset;
> -     for (i = 0; i < SWAPFILE_CLUSTER; i++)
> -             map[i] = SWAP_HAS_CACHE;
> +     memset(si->swap_map + offset, SWAP_HAS_CACHE, SWAPFILE_CLUSTER);
>       unlock_cluster(ci);
>       swap_range_alloc(si, offset, SWAPFILE_CLUSTER);
>       *slot = swp_entry(si->type, offset);

I suppose so.  But it does assume that the ->swapmap array has the type
char.  If we ever change that, breakage will ensue.

Reply via email to