|
@@ -3165,7 +3165,6 @@ void mem_cgroup_uncharge_swap(swp_entry_t ent)
|
|
|
* @entry: swap entry to be moved
|
|
|
* @from: mem_cgroup which the entry is moved from
|
|
|
* @to: mem_cgroup which the entry is moved to
|
|
|
- * @need_fixup: whether we should fixup res_counters and refcounts.
|
|
|
*
|
|
|
* It succeeds only when the swap_cgroup's record for this entry is the same
|
|
|
* as the mem_cgroup's id of @from.
|
|
@@ -3176,7 +3175,7 @@ void mem_cgroup_uncharge_swap(swp_entry_t ent)
|
|
|
* both res and memsw, and called css_get().
|
|
|
*/
|
|
|
static int mem_cgroup_move_swap_account(swp_entry_t entry,
|
|
|
- struct mem_cgroup *from, struct mem_cgroup *to, bool need_fixup)
|
|
|
+ struct mem_cgroup *from, struct mem_cgroup *to)
|
|
|
{
|
|
|
unsigned short old_id, new_id;
|
|
|
|
|
@@ -3195,24 +3194,13 @@ static int mem_cgroup_move_swap_account(swp_entry_t entry,
|
|
|
* swap-in, the refcount of @to might be decreased to 0.
|
|
|
*/
|
|
|
mem_cgroup_get(to);
|
|
|
- if (need_fixup) {
|
|
|
- if (!mem_cgroup_is_root(from))
|
|
|
- res_counter_uncharge(&from->memsw, PAGE_SIZE);
|
|
|
- mem_cgroup_put(from);
|
|
|
- /*
|
|
|
- * we charged both to->res and to->memsw, so we should
|
|
|
- * uncharge to->res.
|
|
|
- */
|
|
|
- if (!mem_cgroup_is_root(to))
|
|
|
- res_counter_uncharge(&to->res, PAGE_SIZE);
|
|
|
- }
|
|
|
return 0;
|
|
|
}
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
#else
|
|
|
static inline int mem_cgroup_move_swap_account(swp_entry_t entry,
|
|
|
- struct mem_cgroup *from, struct mem_cgroup *to, bool need_fixup)
|
|
|
+ struct mem_cgroup *from, struct mem_cgroup *to)
|
|
|
{
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -5546,8 +5534,7 @@ put: /* get_mctgt_type() gets the page */
|
|
|
break;
|
|
|
case MC_TARGET_SWAP:
|
|
|
ent = target.ent;
|
|
|
- if (!mem_cgroup_move_swap_account(ent,
|
|
|
- mc.from, mc.to, false)) {
|
|
|
+ if (!mem_cgroup_move_swap_account(ent, mc.from, mc.to)) {
|
|
|
mc.precharge--;
|
|
|
/* we fixup refcnts and charges later. */
|
|
|
mc.moved_swap++;
|