All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [RFC] writeback: add elastic bdi in cgwb bdp
Date: Mon, 14 Oct 2019 03:17:23 +0800	[thread overview]
Message-ID: <201910140306.8KidW5wf%lkp@intel.com> (raw)
In-Reply-To: <20191012132740.12968-1-hdanton@sina.com>

[-- Attachment #1: Type: text/plain, Size: 4917 bytes --]

Hi Hillf,

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on linus/master]
[cannot apply to v5.4-rc2 next-20191011]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Hillf-Danton/writeback-add-elastic-bdi-in-cgwb-bdp/20191014-014906
config: i386-tinyconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   mm/page-writeback.c: In function 'balance_dirty_pages_ratelimited':
>> mm/page-writeback.c:1954:4: error: implicit declaration of function 'cgwb_bdp' [-Werror=implicit-function-declaration]
       cgwb_bdp(wb);
       ^~~~~~~~
>> mm/page-writeback.c:1951:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
     if (unlikely(current->nr_dirtied >= ratelimit))
        ^
   cc1: some warnings being treated as errors
--
   In file included from mm/backing-dev.c:3:0:
   mm/backing-dev.c: In function 'wb_init':
>> mm/backing-dev.c:329:26: error: 'struct bdi_writeback' has no member named 'bdp_waitq'
      init_waitqueue_head(&wb->bdp_waitq);
                             ^
   include/linux/wait.h:67:26: note: in definition of macro 'init_waitqueue_head'
      __init_waitqueue_head((wq_head), #wq_head, &__key);  \
                             ^~~~~~~

vim +/cgwb_bdp +1954 mm/page-writeback.c

  1889	
  1890	/**
  1891	 * balance_dirty_pages_ratelimited - balance dirty memory state
  1892	 * @mapping: address_space which was dirtied
  1893	 *
  1894	 * Processes which are dirtying memory should call in here once for each page
  1895	 * which was newly dirtied.  The function will periodically check the system's
  1896	 * dirty state and will initiate writeback if needed.
  1897	 *
  1898	 * On really big machines, get_writeback_state is expensive, so try to avoid
  1899	 * calling it too often (ratelimiting).  But once we're over the dirty memory
  1900	 * limit we decrease the ratelimiting by a lot, to prevent individual processes
  1901	 * from overshooting the limit by (ratelimit_pages) each.
  1902	 */
  1903	void balance_dirty_pages_ratelimited(struct address_space *mapping)
  1904	{
  1905		struct inode *inode = mapping->host;
  1906		struct backing_dev_info *bdi = inode_to_bdi(inode);
  1907		struct bdi_writeback *wb = NULL;
  1908		int ratelimit;
  1909		int *p;
  1910	
  1911		if (!bdi_cap_account_dirty(bdi))
  1912			return;
  1913	
  1914		if (inode_cgwb_enabled(inode))
  1915			wb = wb_get_create_current(bdi, GFP_KERNEL);
  1916		if (!wb)
  1917			wb = &bdi->wb;
  1918	
  1919		ratelimit = current->nr_dirtied_pause;
  1920		if (wb->dirty_exceeded)
  1921			ratelimit = min(ratelimit, 32 >> (PAGE_SHIFT - 10));
  1922	
  1923		preempt_disable();
  1924		/*
  1925		 * This prevents one CPU to accumulate too many dirtied pages without
  1926		 * calling into balance_dirty_pages(), which can happen when there are
  1927		 * 1000+ tasks, all of them start dirtying pages at exactly the same
  1928		 * time, hence all honoured too large initial task->nr_dirtied_pause.
  1929		 */
  1930		p =  this_cpu_ptr(&bdp_ratelimits);
  1931		if (unlikely(current->nr_dirtied >= ratelimit))
  1932			*p = 0;
  1933		else if (unlikely(*p >= ratelimit_pages)) {
  1934			*p = 0;
  1935			ratelimit = 0;
  1936		}
  1937		/*
  1938		 * Pick up the dirtied pages by the exited tasks. This avoids lots of
  1939		 * short-lived tasks (eg. gcc invocations in a kernel build) escaping
  1940		 * the dirty throttling and livelock other long-run dirtiers.
  1941		 */
  1942		p = this_cpu_ptr(&dirty_throttle_leaks);
  1943		if (*p > 0 && current->nr_dirtied < ratelimit) {
  1944			unsigned long nr_pages_dirtied;
  1945			nr_pages_dirtied = min(*p, ratelimit - current->nr_dirtied);
  1946			*p -= nr_pages_dirtied;
  1947			current->nr_dirtied += nr_pages_dirtied;
  1948		}
  1949		preempt_enable();
  1950	
> 1951		if (unlikely(current->nr_dirtied >= ratelimit))
  1952			if (IS_ENABLED(CONFIG_CGROUP_WRITEBACK) &&
  1953			    IS_ENABLED(CONFIG_CGWB_BDP_WITH_EBDI))
> 1954				cgwb_bdp(wb);
  1955			else
  1956				balance_dirty_pages(wb, current->nr_dirtied);
  1957	
  1958		wb_put(wb);
  1959	}
  1960	EXPORT_SYMBOL(balance_dirty_pages_ratelimited);
  1961	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 7207 bytes --]

  reply	other threads:[~2019-10-13 19:17 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-12 13:27 [RFC] writeback: add elastic bdi in cgwb bdp Hillf Danton
2019-10-13 19:17 ` kbuild test robot [this message]
2019-10-13 20:13 ` kbuild test robot
2019-10-15 10:22 ` Jan Kara
2019-10-15 14:03 ` Hillf Danton
2019-10-15 14:37   ` Tejun Heo
2019-10-16  2:26   ` Hillf Danton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201910140306.8KidW5wf%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.