[mmotm:master 80/178] mm/memcontrol.c:6847:184: warning: value computed is not used

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

 



tree:   git://git.cmpxchg.org/linux-mmotm.git master
head:   a621774e0e7bbd9e8a024230af4704cc489bd40e
commit: 5e2db44974d6ea928e257ac99031b5c5bf2ddaa4 [80/178] memcg: separate mem_cgroup_move_charge_pte_range()
config: make ARCH=i386 allmodconfig

All warnings:

   mm/memcontrol.c: In function 'mem_cgroup_count_precharge_pmd':
   mm/memcontrol.c:6674:3: error: 'skip' undeclared (first use in this function)
      skip->control = PTWALK_DOWN;
      ^
   mm/memcontrol.c:6674:3: note: each undeclared identifier is reported only once for each function it appears in
   mm/memcontrol.c: In function 'mem_cgroup_move_charge_pte':
>> mm/memcontrol.c:6847:184: warning: value computed is not used [-Wunused-value]
      pte_offset_map(walk->pmd, addr & PMD_MASK);
                                                                                                                                                                                           ^
   mm/memcontrol.c: In function 'mem_cgroup_move_charge_pmd':
   mm/memcontrol.c:6905:37: error: 'ptl' undeclared (first use in this function)
     if (pmd_trans_huge_lock(pmd, vma, &ptl) == 1) {
                                        ^

vim +6847 mm/memcontrol.c

  6668	
  6669		if (pmd_trans_huge_lock(pmd, vma, &ptl) == 1) {
  6670			if (get_mctgt_type_thp(vma, addr, *pmd, NULL) == MC_TARGET_PAGE)
  6671				mc.precharge += HPAGE_PMD_NR;
  6672			spin_unlock(ptl);
  6673		} else
> 6674			skip->control = PTWALK_DOWN;
  6675		return 0;
  6676	}
  6677	
  6678	static unsigned long mem_cgroup_count_precharge(struct mm_struct *mm)
  6679	{
  6680		unsigned long precharge;
  6681		struct vm_area_struct *vma;
  6682	
  6683		struct mm_walk mem_cgroup_count_precharge_walk = {
  6684			.pmd_entry = mem_cgroup_count_precharge_pmd,
  6685			.pte_entry = mem_cgroup_count_precharge_pte,
  6686			.mm = mm,
  6687		};
  6688		down_read(&mm->mmap_sem);
  6689		for (vma = mm->mmap; vma; vma = vma->vm_next)
  6690			walk_page_vma(vma, &mem_cgroup_count_precharge_walk);
  6691		up_read(&mm->mmap_sem);
  6692	
  6693		precharge = mc.precharge;
  6694		mc.precharge = 0;
  6695	
  6696		return precharge;
  6697	}
  6698	
  6699	static int mem_cgroup_precharge_mc(struct mm_struct *mm)
  6700	{
  6701		unsigned long precharge = mem_cgroup_count_precharge(mm);
  6702	
  6703		VM_BUG_ON(mc.moving_task);
  6704		mc.moving_task = current;
  6705		return mem_cgroup_do_precharge(precharge);
  6706	}
  6707	
  6708	/* cancels all extra charges on mc.from and mc.to, and wakes up all waiters. */
  6709	static void __mem_cgroup_clear_mc(void)
  6710	{
  6711		struct mem_cgroup *from = mc.from;
  6712		struct mem_cgroup *to = mc.to;
  6713		int i;
  6714	
  6715		/* we must uncharge all the leftover precharges from mc.to */
  6716		if (mc.precharge) {
  6717			__mem_cgroup_cancel_charge(mc.to, mc.precharge);
  6718			mc.precharge = 0;
  6719		}
  6720		/*
  6721		 * we didn't uncharge from mc.from at mem_cgroup_move_account(), so
  6722		 * we must uncharge here.
  6723		 */
  6724		if (mc.moved_charge) {
  6725			__mem_cgroup_cancel_charge(mc.from, mc.moved_charge);
  6726			mc.moved_charge = 0;
  6727		}
  6728		/* we must fixup refcnts and charges */
  6729		if (mc.moved_swap) {
  6730			/* uncharge swap account from the old cgroup */
  6731			if (!mem_cgroup_is_root(mc.from))
  6732				res_counter_uncharge(&mc.from->memsw,
  6733							PAGE_SIZE * mc.moved_swap);
  6734	
  6735			for (i = 0; i < mc.moved_swap; i++)
  6736				css_put(&mc.from->css);
  6737	
  6738			if (!mem_cgroup_is_root(mc.to)) {
  6739				/*
  6740				 * we charged both to->res and to->memsw, so we should
  6741				 * uncharge to->res.
  6742				 */
  6743				res_counter_uncharge(&mc.to->res,
  6744							PAGE_SIZE * mc.moved_swap);
  6745			}
  6746			/* we've already done css_get(mc.to) */
  6747			mc.moved_swap = 0;
  6748		}
  6749		memcg_oom_recover(from);
  6750		memcg_oom_recover(to);
  6751		wake_up_all(&mc.waitq);
  6752	}
  6753	
  6754	static void mem_cgroup_clear_mc(void)
  6755	{
  6756		struct mem_cgroup *from = mc.from;
  6757	
  6758		/*
  6759		 * we must clear moving_task before waking up waiters at the end of
  6760		 * task migration.
  6761		 */
  6762		mc.moving_task = NULL;
  6763		__mem_cgroup_clear_mc();
  6764		spin_lock(&mc.lock);
  6765		mc.from = NULL;
  6766		mc.to = NULL;
  6767		spin_unlock(&mc.lock);
  6768		mem_cgroup_end_move(from);
  6769	}
  6770	
  6771	static int mem_cgroup_can_attach(struct cgroup_subsys_state *css,
  6772					 struct cgroup_taskset *tset)
  6773	{
  6774		struct task_struct *p = cgroup_taskset_first(tset);
  6775		int ret = 0;
  6776		struct mem_cgroup *memcg = mem_cgroup_from_css(css);
  6777		unsigned long move_charge_at_immigrate;
  6778	
  6779		/*
  6780		 * We are now commited to this value whatever it is. Changes in this
  6781		 * tunable will only affect upcoming migrations, not the current one.
  6782		 * So we need to save it, and keep it going.
  6783		 */
  6784		move_charge_at_immigrate  = memcg->move_charge_at_immigrate;
  6785		if (move_charge_at_immigrate) {
  6786			struct mm_struct *mm;
  6787			struct mem_cgroup *from = mem_cgroup_from_task(p);
  6788	
  6789			VM_BUG_ON(from == memcg);
  6790	
  6791			mm = get_task_mm(p);
  6792			if (!mm)
  6793				return 0;
  6794			/* We move charges only when we move a owner of the mm */
  6795			if (mm->owner == p) {
  6796				VM_BUG_ON(mc.from);
  6797				VM_BUG_ON(mc.to);
  6798				VM_BUG_ON(mc.precharge);
  6799				VM_BUG_ON(mc.moved_charge);
  6800				VM_BUG_ON(mc.moved_swap);
  6801				mem_cgroup_start_move(from);
  6802				spin_lock(&mc.lock);
  6803				mc.from = from;
  6804				mc.to = memcg;
  6805				mc.immigrate_flags = move_charge_at_immigrate;
  6806				spin_unlock(&mc.lock);
  6807				/* We set mc.moving_task later */
  6808	
  6809				ret = mem_cgroup_precharge_mc(mm);
  6810				if (ret)
  6811					mem_cgroup_clear_mc();
  6812			}
  6813			mmput(mm);
  6814		}
  6815		return ret;
  6816	}
  6817	
  6818	static void mem_cgroup_cancel_attach(struct cgroup_subsys_state *css,
  6819					     struct cgroup_taskset *tset)
  6820	{
  6821		mem_cgroup_clear_mc();
  6822	}
  6823	
  6824	static int mem_cgroup_move_charge_pte(pte_t *pte,
  6825					unsigned long addr, unsigned long end,
  6826					struct mm_walk *walk)
  6827	{
  6828		int ret = 0;
  6829		struct vm_area_struct *vma = walk->vma;
  6830		union mc_target target;
  6831		struct page *page;
  6832		struct page_cgroup *pc;
  6833		swp_entry_t ent;
  6834	
  6835	retry:
  6836		if (!mc.precharge) {
  6837			pte_t *orig_pte = pte - ((addr & (PMD_SIZE - 1)) >> PAGE_SHIFT);
  6838			pte_unmap_unlock(orig_pte, walk->ptl);
  6839			cond_resched();
  6840			/*
  6841			 * We have consumed all precharges we got in can_attach().
  6842			 * We try charge one by one, but don't do any additional
  6843			 * charges to mc.to if we have failed in charge once in attach()
  6844			 * phase.
  6845			 */
  6846			ret = mem_cgroup_do_precharge(1);
> 6847			pte_offset_map(walk->pmd, addr & PMD_MASK);
  6848			spin_lock(walk->ptl);
  6849			if (!ret)
  6850				goto retry;

---
0-DAY kernel build testing backend              Open Source Technology Center
http://lists.01.org/mailman/listinfo/kbuild                 Intel Corporation

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




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