From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [axboe-block:for-5.16/passthrough-flag 136/159] fs/fs-writeback.c:1896:15: error: 'struct task_struct' has no member named 'plug'
Date: Sun, 31 Oct 2021 00:24:05 +0800 [thread overview]
Message-ID: <202110310058.oh2LK0CJ-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 8181 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-5.16/passthrough-flag
head: 0bf6d96cb8294094ce1e44cbe8cf65b0899d0a3a
commit: 008f75a20e7072d0840ec323c39b42206f3fa8a0 [136/159] block: cleanup the flush plug helpers
config: x86_64-randconfig-s022-20211028 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/commit/?id=008f75a20e7072d0840ec323c39b42206f3fa8a0
git remote add axboe-block https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
git fetch --no-tags axboe-block for-5.16/passthrough-flag
git checkout 008f75a20e7072d0840ec323c39b42206f3fa8a0
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
fs/fs-writeback.c: In function 'writeback_sb_inodes':
>> fs/fs-writeback.c:1896:15: error: 'struct task_struct' has no member named 'plug'
1896 | if (current->plug)
| ^~
fs/fs-writeback.c:1897:27: error: 'struct task_struct' has no member named 'plug'
1897 | blk_flush_plug(current->plug, false);
| ^~
fs/fs-writeback.c: In function 'wakeup_flusher_threads':
fs/fs-writeback.c:2295:25: error: 'struct task_struct' has no member named 'plug'
2295 | blk_flush_plug(current->plug, true);
| ^~
--
kernel/sched/core.c:3416:6: warning: no previous prototype for 'sched_set_stop_task' [-Wmissing-prototypes]
3416 | void sched_set_stop_task(int cpu, struct task_struct *stop)
| ^~~~~~~~~~~~~~~~~~~
kernel/sched/core.c: In function 'sched_submit_work':
>> kernel/sched/core.c:6346:21: error: 'struct task_struct' has no member named 'plug'
6346 | blk_flush_plug(tsk->plug, true);
| ^~
kernel/sched/core.c: In function 'io_schedule_prepare':
kernel/sched/core.c:8357:13: error: 'struct task_struct' has no member named 'plug'
8357 | if (current->plug)
| ^~
kernel/sched/core.c:8358:25: error: 'struct task_struct' has no member named 'plug'
8358 | blk_flush_plug(current->plug, true);
| ^~
vim +1896 fs/fs-writeback.c
1779
1780 /*
1781 * Write a portion of b_io inodes which belong to @sb.
1782 *
1783 * Return the number of pages and/or inodes written.
1784 *
1785 * NOTE! This is called with wb->list_lock held, and will
1786 * unlock and relock that for each inode it ends up doing
1787 * IO for.
1788 */
1789 static long writeback_sb_inodes(struct super_block *sb,
1790 struct bdi_writeback *wb,
1791 struct wb_writeback_work *work)
1792 {
1793 struct writeback_control wbc = {
1794 .sync_mode = work->sync_mode,
1795 .tagged_writepages = work->tagged_writepages,
1796 .for_kupdate = work->for_kupdate,
1797 .for_background = work->for_background,
1798 .for_sync = work->for_sync,
1799 .range_cyclic = work->range_cyclic,
1800 .range_start = 0,
1801 .range_end = LLONG_MAX,
1802 };
1803 unsigned long start_time = jiffies;
1804 long write_chunk;
1805 long wrote = 0; /* count both pages and inodes */
1806
1807 while (!list_empty(&wb->b_io)) {
1808 struct inode *inode = wb_inode(wb->b_io.prev);
1809 struct bdi_writeback *tmp_wb;
1810
1811 if (inode->i_sb != sb) {
1812 if (work->sb) {
1813 /*
1814 * We only want to write back data for this
1815 * superblock, move all inodes not belonging
1816 * to it back onto the dirty list.
1817 */
1818 redirty_tail(inode, wb);
1819 continue;
1820 }
1821
1822 /*
1823 * The inode belongs to a different superblock.
1824 * Bounce back to the caller to unpin this and
1825 * pin the next superblock.
1826 */
1827 break;
1828 }
1829
1830 /*
1831 * Don't bother with new inodes or inodes being freed, first
1832 * kind does not need periodic writeout yet, and for the latter
1833 * kind writeout is handled by the freer.
1834 */
1835 spin_lock(&inode->i_lock);
1836 if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) {
1837 redirty_tail_locked(inode, wb);
1838 spin_unlock(&inode->i_lock);
1839 continue;
1840 }
1841 if ((inode->i_state & I_SYNC) && wbc.sync_mode != WB_SYNC_ALL) {
1842 /*
1843 * If this inode is locked for writeback and we are not
1844 * doing writeback-for-data-integrity, move it to
1845 * b_more_io so that writeback can proceed with the
1846 * other inodes on s_io.
1847 *
1848 * We'll have another go at writing back this inode
1849 * when we completed a full scan of b_io.
1850 */
1851 spin_unlock(&inode->i_lock);
1852 requeue_io(inode, wb);
1853 trace_writeback_sb_inodes_requeue(inode);
1854 continue;
1855 }
1856 spin_unlock(&wb->list_lock);
1857
1858 /*
1859 * We already requeued the inode if it had I_SYNC set and we
1860 * are doing WB_SYNC_NONE writeback. So this catches only the
1861 * WB_SYNC_ALL case.
1862 */
1863 if (inode->i_state & I_SYNC) {
1864 /* Wait for I_SYNC. This function drops i_lock... */
1865 inode_sleep_on_writeback(inode);
1866 /* Inode may be gone, start again */
1867 spin_lock(&wb->list_lock);
1868 continue;
1869 }
1870 inode->i_state |= I_SYNC;
1871 wbc_attach_and_unlock_inode(&wbc, inode);
1872
1873 write_chunk = writeback_chunk_size(wb, work);
1874 wbc.nr_to_write = write_chunk;
1875 wbc.pages_skipped = 0;
1876
1877 /*
1878 * We use I_SYNC to pin the inode in memory. While it is set
1879 * evict_inode() will wait so the inode cannot be freed.
1880 */
1881 __writeback_single_inode(inode, &wbc);
1882
1883 wbc_detach_inode(&wbc);
1884 work->nr_pages -= write_chunk - wbc.nr_to_write;
1885 wrote += write_chunk - wbc.nr_to_write;
1886
1887 if (need_resched()) {
1888 /*
1889 * We're trying to balance between building up a nice
1890 * long list of IOs to improve our merge rate, and
1891 * getting those IOs out quickly for anyone throttling
1892 * in balance_dirty_pages(). cond_resched() doesn't
1893 * unplug, so get our IOs out the door before we
1894 * give up the CPU.
1895 */
> 1896 if (current->plug)
1897 blk_flush_plug(current->plug, false);
1898 cond_resched();
1899 }
1900
1901 /*
1902 * Requeue @inode if still dirty. Be careful as @inode may
1903 * have been switched to another wb in the meantime.
1904 */
1905 tmp_wb = inode_to_wb_and_lock_list(inode);
1906 spin_lock(&inode->i_lock);
1907 if (!(inode->i_state & I_DIRTY_ALL))
1908 wrote++;
1909 requeue_inode(inode, tmp_wb, &wbc);
1910 inode_sync_complete(inode);
1911 spin_unlock(&inode->i_lock);
1912
1913 if (unlikely(tmp_wb != wb)) {
1914 spin_unlock(&tmp_wb->list_lock);
1915 spin_lock(&wb->list_lock);
1916 }
1917
1918 /*
1919 * bail out to wb_writeback() often enough to check
1920 * background threshold and other termination conditions.
1921 */
1922 if (wrote) {
1923 if (time_is_before_jiffies(start_time + HZ / 10UL))
1924 break;
1925 if (work->nr_pages <= 0)
1926 break;
1927 }
1928 }
1929 return wrote;
1930 }
1931
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 37628 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Christoph Hellwig <hch@lst.de>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
Jens Axboe <axboe@kernel.dk>
Subject: [axboe-block:for-5.16/passthrough-flag 136/159] fs/fs-writeback.c:1896:15: error: 'struct task_struct' has no member named 'plug'
Date: Sun, 31 Oct 2021 00:24:05 +0800 [thread overview]
Message-ID: <202110310058.oh2LK0CJ-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 7974 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-5.16/passthrough-flag
head: 0bf6d96cb8294094ce1e44cbe8cf65b0899d0a3a
commit: 008f75a20e7072d0840ec323c39b42206f3fa8a0 [136/159] block: cleanup the flush plug helpers
config: x86_64-randconfig-s022-20211028 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/commit/?id=008f75a20e7072d0840ec323c39b42206f3fa8a0
git remote add axboe-block https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
git fetch --no-tags axboe-block for-5.16/passthrough-flag
git checkout 008f75a20e7072d0840ec323c39b42206f3fa8a0
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
fs/fs-writeback.c: In function 'writeback_sb_inodes':
>> fs/fs-writeback.c:1896:15: error: 'struct task_struct' has no member named 'plug'
1896 | if (current->plug)
| ^~
fs/fs-writeback.c:1897:27: error: 'struct task_struct' has no member named 'plug'
1897 | blk_flush_plug(current->plug, false);
| ^~
fs/fs-writeback.c: In function 'wakeup_flusher_threads':
fs/fs-writeback.c:2295:25: error: 'struct task_struct' has no member named 'plug'
2295 | blk_flush_plug(current->plug, true);
| ^~
--
kernel/sched/core.c:3416:6: warning: no previous prototype for 'sched_set_stop_task' [-Wmissing-prototypes]
3416 | void sched_set_stop_task(int cpu, struct task_struct *stop)
| ^~~~~~~~~~~~~~~~~~~
kernel/sched/core.c: In function 'sched_submit_work':
>> kernel/sched/core.c:6346:21: error: 'struct task_struct' has no member named 'plug'
6346 | blk_flush_plug(tsk->plug, true);
| ^~
kernel/sched/core.c: In function 'io_schedule_prepare':
kernel/sched/core.c:8357:13: error: 'struct task_struct' has no member named 'plug'
8357 | if (current->plug)
| ^~
kernel/sched/core.c:8358:25: error: 'struct task_struct' has no member named 'plug'
8358 | blk_flush_plug(current->plug, true);
| ^~
vim +1896 fs/fs-writeback.c
1779
1780 /*
1781 * Write a portion of b_io inodes which belong to @sb.
1782 *
1783 * Return the number of pages and/or inodes written.
1784 *
1785 * NOTE! This is called with wb->list_lock held, and will
1786 * unlock and relock that for each inode it ends up doing
1787 * IO for.
1788 */
1789 static long writeback_sb_inodes(struct super_block *sb,
1790 struct bdi_writeback *wb,
1791 struct wb_writeback_work *work)
1792 {
1793 struct writeback_control wbc = {
1794 .sync_mode = work->sync_mode,
1795 .tagged_writepages = work->tagged_writepages,
1796 .for_kupdate = work->for_kupdate,
1797 .for_background = work->for_background,
1798 .for_sync = work->for_sync,
1799 .range_cyclic = work->range_cyclic,
1800 .range_start = 0,
1801 .range_end = LLONG_MAX,
1802 };
1803 unsigned long start_time = jiffies;
1804 long write_chunk;
1805 long wrote = 0; /* count both pages and inodes */
1806
1807 while (!list_empty(&wb->b_io)) {
1808 struct inode *inode = wb_inode(wb->b_io.prev);
1809 struct bdi_writeback *tmp_wb;
1810
1811 if (inode->i_sb != sb) {
1812 if (work->sb) {
1813 /*
1814 * We only want to write back data for this
1815 * superblock, move all inodes not belonging
1816 * to it back onto the dirty list.
1817 */
1818 redirty_tail(inode, wb);
1819 continue;
1820 }
1821
1822 /*
1823 * The inode belongs to a different superblock.
1824 * Bounce back to the caller to unpin this and
1825 * pin the next superblock.
1826 */
1827 break;
1828 }
1829
1830 /*
1831 * Don't bother with new inodes or inodes being freed, first
1832 * kind does not need periodic writeout yet, and for the latter
1833 * kind writeout is handled by the freer.
1834 */
1835 spin_lock(&inode->i_lock);
1836 if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) {
1837 redirty_tail_locked(inode, wb);
1838 spin_unlock(&inode->i_lock);
1839 continue;
1840 }
1841 if ((inode->i_state & I_SYNC) && wbc.sync_mode != WB_SYNC_ALL) {
1842 /*
1843 * If this inode is locked for writeback and we are not
1844 * doing writeback-for-data-integrity, move it to
1845 * b_more_io so that writeback can proceed with the
1846 * other inodes on s_io.
1847 *
1848 * We'll have another go at writing back this inode
1849 * when we completed a full scan of b_io.
1850 */
1851 spin_unlock(&inode->i_lock);
1852 requeue_io(inode, wb);
1853 trace_writeback_sb_inodes_requeue(inode);
1854 continue;
1855 }
1856 spin_unlock(&wb->list_lock);
1857
1858 /*
1859 * We already requeued the inode if it had I_SYNC set and we
1860 * are doing WB_SYNC_NONE writeback. So this catches only the
1861 * WB_SYNC_ALL case.
1862 */
1863 if (inode->i_state & I_SYNC) {
1864 /* Wait for I_SYNC. This function drops i_lock... */
1865 inode_sleep_on_writeback(inode);
1866 /* Inode may be gone, start again */
1867 spin_lock(&wb->list_lock);
1868 continue;
1869 }
1870 inode->i_state |= I_SYNC;
1871 wbc_attach_and_unlock_inode(&wbc, inode);
1872
1873 write_chunk = writeback_chunk_size(wb, work);
1874 wbc.nr_to_write = write_chunk;
1875 wbc.pages_skipped = 0;
1876
1877 /*
1878 * We use I_SYNC to pin the inode in memory. While it is set
1879 * evict_inode() will wait so the inode cannot be freed.
1880 */
1881 __writeback_single_inode(inode, &wbc);
1882
1883 wbc_detach_inode(&wbc);
1884 work->nr_pages -= write_chunk - wbc.nr_to_write;
1885 wrote += write_chunk - wbc.nr_to_write;
1886
1887 if (need_resched()) {
1888 /*
1889 * We're trying to balance between building up a nice
1890 * long list of IOs to improve our merge rate, and
1891 * getting those IOs out quickly for anyone throttling
1892 * in balance_dirty_pages(). cond_resched() doesn't
1893 * unplug, so get our IOs out the door before we
1894 * give up the CPU.
1895 */
> 1896 if (current->plug)
1897 blk_flush_plug(current->plug, false);
1898 cond_resched();
1899 }
1900
1901 /*
1902 * Requeue @inode if still dirty. Be careful as @inode may
1903 * have been switched to another wb in the meantime.
1904 */
1905 tmp_wb = inode_to_wb_and_lock_list(inode);
1906 spin_lock(&inode->i_lock);
1907 if (!(inode->i_state & I_DIRTY_ALL))
1908 wrote++;
1909 requeue_inode(inode, tmp_wb, &wbc);
1910 inode_sync_complete(inode);
1911 spin_unlock(&inode->i_lock);
1912
1913 if (unlikely(tmp_wb != wb)) {
1914 spin_unlock(&tmp_wb->list_lock);
1915 spin_lock(&wb->list_lock);
1916 }
1917
1918 /*
1919 * bail out to wb_writeback() often enough to check
1920 * background threshold and other termination conditions.
1921 */
1922 if (wrote) {
1923 if (time_is_before_jiffies(start_time + HZ / 10UL))
1924 break;
1925 if (work->nr_pages <= 0)
1926 break;
1927 }
1928 }
1929 return wrote;
1930 }
1931
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37628 bytes --]
next reply other threads:[~2021-10-30 16:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-30 16:24 kernel test robot [this message]
2021-10-30 16:24 ` [axboe-block:for-5.16/passthrough-flag 136/159] fs/fs-writeback.c:1896:15: error: 'struct task_struct' has no member named 'plug' kernel test robot
2021-10-30 16:52 ` Jens Axboe
2021-10-30 16:52 ` Jens Axboe
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=202110310058.oh2LK0CJ-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.