mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 14:10:49 +07:00
mm/swapfile.c: add __swap_entry_free_locked()
The part of __swap_entry_free() with lock held is separated into a new function __swap_entry_free_locked(). Because we want to reuse that piece of code in some other places. Just mechanical code refactoring, there is no any functional change in this function. Link: http://lkml.kernel.org/r/20180720071845.17920-8-ying.huang@intel.com Signed-off-by: "Huang, Ying" <ying.huang@intel.com> Reviewed-by: Daniel Jordan <daniel.m.jordan@oracle.com> Acked-by: Dave Hansen <dave.hansen@linux.intel.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Shaohua Li <shli@kernel.org> Cc: Hugh Dickins <hughd@google.com> Cc: Minchan Kim <minchan@kernel.org> Cc: Rik van Riel <riel@redhat.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Matthew Wilcox <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5d5e8f1954
commit
b32d5f32b9
@ -1123,16 +1123,13 @@ static struct swap_info_struct *swap_info_get_cont(swp_entry_t entry,
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned char __swap_entry_free(struct swap_info_struct *p,
|
static unsigned char __swap_entry_free_locked(struct swap_info_struct *p,
|
||||||
swp_entry_t entry, unsigned char usage)
|
unsigned long offset,
|
||||||
|
unsigned char usage)
|
||||||
{
|
{
|
||||||
struct swap_cluster_info *ci;
|
|
||||||
unsigned long offset = swp_offset(entry);
|
|
||||||
unsigned char count;
|
unsigned char count;
|
||||||
unsigned char has_cache;
|
unsigned char has_cache;
|
||||||
|
|
||||||
ci = lock_cluster_or_swap_info(p, offset);
|
|
||||||
|
|
||||||
count = p->swap_map[offset];
|
count = p->swap_map[offset];
|
||||||
|
|
||||||
has_cache = count & SWAP_HAS_CACHE;
|
has_cache = count & SWAP_HAS_CACHE;
|
||||||
@ -1160,6 +1157,17 @@ static unsigned char __swap_entry_free(struct swap_info_struct *p,
|
|||||||
usage = count | has_cache;
|
usage = count | has_cache;
|
||||||
p->swap_map[offset] = usage ? : SWAP_HAS_CACHE;
|
p->swap_map[offset] = usage ? : SWAP_HAS_CACHE;
|
||||||
|
|
||||||
|
return usage;
|
||||||
|
}
|
||||||
|
|
||||||
|
static unsigned char __swap_entry_free(struct swap_info_struct *p,
|
||||||
|
swp_entry_t entry, unsigned char usage)
|
||||||
|
{
|
||||||
|
struct swap_cluster_info *ci;
|
||||||
|
unsigned long offset = swp_offset(entry);
|
||||||
|
|
||||||
|
ci = lock_cluster_or_swap_info(p, offset);
|
||||||
|
usage = __swap_entry_free_locked(p, offset, usage);
|
||||||
unlock_cluster_or_swap_info(p, ci);
|
unlock_cluster_or_swap_info(p, ci);
|
||||||
|
|
||||||
return usage;
|
return usage;
|
||||||
|
Loading…
Reference in New Issue
Block a user