Re: [PATCH] buffer: Associate the meta bio with blkg from buffer page

kernel test robot
2024-08-29T16:21:32Z

Hi Haifeng,

kernel test robot noticed the following build errors:

[auto build test ERROR on brauner-vfs/vfs.all]
[also build test ERROR on linus/master v6.11-rc5 next-20240829]
[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#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Haifeng-Xu/buffer-Associate-the-meta-bio-with-blkg-from-buffer-page/20240828-113409
base: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git vfs.all
patch link: https://lore.kernel.org/r/20240828033224.146584-1-haifeng.xu%40shopee.com
patch subject: [PATCH] buffer: Associate the meta bio with blkg from buffer page
config: alpha-defconfig (https://download.01.org/0day-ci/archive/20240830/202408300007.m9sHEOXo-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240830/202408300007.m9sHEOXo-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408300007.m9sHEOXo-lkp@intel.com/

All errors (new ones prefixed by >>):

fs/buffer.c: In function 'submit_bh_wbc':
fs/buffer.c:2826:29: error: implicit declaration of function 'mem_cgroup_css_from_folio'; did you mean 'mem_cgroup_from_obj'? [-Werror=implicit-function-declaration]
2826 | memcg_css = mem_cgroup_css_from_folio(folio);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| mem_cgroup_from_obj
fs/buffer.c:2826:27: warning: assignment to 'struct cgroup_subsys_state *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
2826 | memcg_css = mem_cgroup_css_from_folio(folio);
| ^
>> fs/buffer.c:2827:21: error: implicit declaration of function 'cgroup_subsys_on_dfl' [-Werror=implicit-function-declaration]
2827 | if (cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
| ^~~~~~~~~~~~~~~~~~~~
>> fs/buffer.c:2827:42: error: 'memory_cgrp_subsys' undeclared (first use in this function)
2827 | if (cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
| ^~~~~~~~~~~~~~~~~~
fs/buffer.c:2827:42: note: each undeclared identifier is reported only once for each function it appears in
fs/buffer.c:2828:42: error: 'io_cgrp_subsys' undeclared (first use in this function)
2828 | cgroup_subsys_on_dfl(io_cgrp_subsys)) {
| ^~~~~~~~~~~~~~
>> fs/buffer.c:2829:37: error: implicit declaration of function 'cgroup_e_css'; did you mean 'cgroup_exit'? [-Werror=implicit-function-declaration]
2829 | blkcg_css = cgroup_e_css(memcg_css->cgroup, &io_cgrp_subsys);
| ^~~~~~~~~~~~
| cgroup_exit
>> fs/buffer.c:2829:59: error: invalid use of undefined type 'struct cgroup_subsys_state'
2829 | blkcg_css = cgroup_e_css(memcg_css->cgroup, &io_cgrp_subsys);
| ^~
cc1: some warnings being treated as errors

vim +/cgroup_subsys_on_dfl +2827 fs/buffer.c

2778
2779 static void submit_bh_wbc(blk_opf_t opf, struct buffer_head *bh,
2780 enum rw_hint write_hint,
2781 struct writeback_control *wbc)
2782 {
2783 const enum req_op op = opf & REQ_OP_MASK;
2784 struct bio *bio;
2785
2786 BUG_ON(!buffer_locked(bh));
2787 BUG_ON(!buffer_mapped(bh));
2788 BUG_ON(!bh->b_end_io);
2789 BUG_ON(buffer_delay(bh));
2790 BUG_ON(buffer_unwritten(bh));
2791
2792 /*
2793 * Only clear out a write error when rewriting
2794 */
2795 if (test_set_buffer_req(bh) && (op == REQ_OP_WRITE))
2796 clear_buffer_write_io_error(bh);
2797
2798 if (buffer_meta(bh))
2799 opf |= REQ_META;
2800 if (buffer_prio(bh))
2801 opf |= REQ_PRIO;
2802
2803 bio = bio_alloc(bh->b_bdev, 1, opf, GFP_NOIO);
2804
2805 fscrypt_set_bio_crypt_ctx_bh(bio, bh, GFP_NOIO);
2806
2807 bio->bi_iter.bi_sector = bh->b_blocknr * (bh->b_size >> 9);
2808 bio->bi_write_hint = write_hint;
2809
2810 __bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh));
2811
2812 bio->bi_end_io = end_bio_bh_io_sync;
2813 bio->bi_private = bh;
2814
2815 /* Take care of bh's that straddle the end of the device */
2816 guard_bio_eod(bio);
2817
2818 if (wbc) {
2819 wbc_init_bio(wbc, bio);
2820 wbc_account_cgroup_owner(wbc, bh->b_page, bh->b_size);
2821 } else if (buffer_meta(bh)) {
2822 struct folio *folio;
2823 struct cgroup_subsys_state *memcg_css, *blkcg_css;
2824
2825 folio = page_folio(bh->b_page);
2826 memcg_css = mem_cgroup_css_from_folio(folio);
> 2827 if (cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
2828 cgroup_subsys_on_dfl(io_cgrp_subsys)) {
> 2829 blkcg_css = cgroup_e_css(memcg_css->cgroup, &io_cgrp_subsys);
2830 bio_associate_blkg_from_css(bio, blkcg_css);
2831 }
2832 }
2833
2834 submit_bio(bio);
2835 }
2836

--
0-DAY CI Kernel Test Service