Re: [PATCH v2 1/2] block: Avoid sleeping function called from invalid context bug

kernel test robot
2021-12-14T07:13:54Z

Hi Wander,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on axboe-block/for-next]
[also build test ERROR on linux/master linus/master v5.16-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/Wander-Lairson-Costa/Fix-warnings-in-blktrace/20211213-204207
base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20211214/202112141554.2175ujH7-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/e53f7f8c1ce0b19fef6164247fea08d17d5f771d
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Wander-Lairson-Costa/Fix-warnings-in-blktrace/20211213-204207
git checkout e53f7f8c1ce0b19fef6164247fea08d17d5f771d
# save the config file to linux build tree
mkdir build_dir
make W=1 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 >>):

block/blk-cgroup.c: In function 'blk_cgroup_bio_start':
>> block/blk-cgroup.c:1915:8: error: implicit declaration of function 'get_cpu_light'; did you mean 'em_cpu_get'? [-Werror=implicit-function-declaration]
1915 | cpu = get_cpu_light();
| ^~~~~~~~~~~~~
| em_cpu_get
>> block/blk-cgroup.c:1932:2: error: implicit declaration of function 'put_cpu_light'; did you mean 'fput_light'? [-Werror=implicit-function-declaration]
1932 | put_cpu_light();
| ^~~~~~~~~~~~~
| fput_light
cc1: some warnings being treated as errors

vim +1915 block/blk-cgroup.c

1908
1909 void blk_cgroup_bio_start(struct bio *bio)
1910 {
1911 int rwd = blk_cgroup_io_type(bio), cpu;
1912 struct blkg_iostat_set *bis;
1913 unsigned long flags;
1914
> 1915 cpu = get_cpu_light();
1916 bis = per_cpu_ptr(bio->bi_blkg->iostat_cpu, cpu);
1917 flags = u64_stats_update_begin_irqsave(&bis->sync);
1918
1919 /*
1920 * If the bio is flagged with BIO_CGROUP_ACCT it means this is a split
1921 * bio and we would have already accounted for the size of the bio.
1922 */
1923 if (!bio_flagged(bio, BIO_CGROUP_ACCT)) {
1924 bio_set_flag(bio, BIO_CGROUP_ACCT);
1925 bis->cur.bytes[rwd] += bio->bi_iter.bi_size;
1926 }
1927 bis->cur.ios[rwd]++;
1928
1929 u64_stats_update_end_irqrestore(&bis->sync, flags);
1930 if (cgroup_subsys_on_dfl(io_cgrp_subsys))
1931 cgroup_rstat_updated(bio->bi_blkg->blkcg->css.cgroup, cpu);
> 1932 put_cpu_light();
1933 }
1934

---
0-DAY CI Kernel Test Service, Intel Corporation