* Re: [PATCH] buffer: Associate the meta bio with blkg from buffer page
2024-08-28 3:32 [PATCH] buffer: Associate the meta bio with blkg from buffer page Haifeng Xu
@ 2024-08-28 5:19 ` Christoph Hellwig
2024-08-29 16:20 ` kernel test robot
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2024-08-28 5:19 UTC (permalink / raw)
To: Haifeng Xu
Cc: viro, brauner, jack, tytso, yi.zhang, yukuai1, tj, linux-ext4,
linux-block, linux-fsdevel, linux-kernel
On Wed, Aug 28, 2024 at 11:32:24AM +0800, Haifeng Xu wrote:
> + } else if (buffer_meta(bh)) {
> + struct folio *folio;
> + struct cgroup_subsys_state *memcg_css, *blkcg_css;
> +
> + folio = page_folio(bh->b_page);
> + memcg_css = mem_cgroup_css_from_folio(folio);
> + if (cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
> + cgroup_subsys_on_dfl(io_cgrp_subsys)) {
> + blkcg_css = cgroup_e_css(memcg_css->cgroup, &io_cgrp_subsys);
> + bio_associate_blkg_from_css(bio, blkcg_css);
> + }
I'll leave it to people more familiar with cgroups to decide if this
is the right thing to do, but if it is the code here should go into
a helper so that other metadata bio submitters can reuse it. That
helper also should have a good comment explaining it.
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] buffer: Associate the meta bio with blkg from buffer page
2024-08-28 3:32 [PATCH] buffer: Associate the meta bio with blkg from buffer page Haifeng Xu
2024-08-28 5:19 ` Christoph Hellwig
@ 2024-08-29 16:20 ` kernel test robot
2024-08-29 17:43 ` kernel test robot
2024-08-30 19:37 ` Tejun Heo
3 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2024-08-29 16:20 UTC (permalink / raw)
To: Haifeng Xu, viro, brauner, jack
Cc: oe-kbuild-all, tytso, yi.zhang, yukuai1, tj, linux-ext4,
linux-block, linux-fsdevel, linux-kernel, Haifeng Xu
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
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] buffer: Associate the meta bio with blkg from buffer page
2024-08-28 3:32 [PATCH] buffer: Associate the meta bio with blkg from buffer page Haifeng Xu
2024-08-28 5:19 ` Christoph Hellwig
2024-08-29 16:20 ` kernel test robot
@ 2024-08-29 17:43 ` kernel test robot
2024-08-30 19:37 ` Tejun Heo
3 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2024-08-29 17:43 UTC (permalink / raw)
To: Haifeng Xu, viro, brauner, jack
Cc: oe-kbuild-all, tytso, yi.zhang, yukuai1, tj, linux-ext4,
linux-block, linux-fsdevel, linux-kernel, Haifeng Xu
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: x86_64-buildonly-randconfig-002-20240829 (https://download.01.org/0day-ci/archive/20240830/202408300119.UQ0zNU1f-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240830/202408300119.UQ0zNU1f-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/202408300119.UQ0zNU1f-lkp@intel.com/
All error/warnings (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);
| ^
In file included from include/linux/array_size.h:5,
from include/linux/kernel.h:16,
from fs/buffer.c:22:
>> fs/buffer.c:2827:42: error: 'memory_cgrp_subsys_on_dfl_key' undeclared (first use in this function); did you mean 'misc_cgrp_subsys_on_dfl_key'?
2827 | if (cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:19:53: note: in definition of macro 'likely_notrace'
19 | #define likely_notrace(x) __builtin_expect(!!(x), 1)
| ^
include/linux/jump_label.h:511:56: note: in expansion of macro 'static_key_enabled'
511 | #define static_branch_likely(x) likely_notrace(static_key_enabled(&(x)->key))
| ^~~~~~~~~~~~~~~~~~
include/linux/cgroup.h:95:9: note: in expansion of macro 'static_branch_likely'
95 | static_branch_likely(&ss ## _on_dfl_key)
| ^~~~~~~~~~~~~~~~~~~~
fs/buffer.c:2827:21: note: in expansion of macro 'cgroup_subsys_on_dfl'
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
2827 | if (cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
| ^~~~~~~~~~~~~~~~~~
include/linux/compiler.h:19:53: note: in definition of macro 'likely_notrace'
19 | #define likely_notrace(x) __builtin_expect(!!(x), 1)
| ^
include/linux/jump_label.h:511:56: note: in expansion of macro 'static_key_enabled'
511 | #define static_branch_likely(x) likely_notrace(static_key_enabled(&(x)->key))
| ^~~~~~~~~~~~~~~~~~
include/linux/cgroup.h:95:9: note: in expansion of macro 'static_branch_likely'
95 | static_branch_likely(&ss ## _on_dfl_key)
| ^~~~~~~~~~~~~~~~~~~~
fs/buffer.c:2827:21: note: in expansion of macro 'cgroup_subsys_on_dfl'
2827 | if (cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
| ^~~~~~~~~~~~~~~~~~~~
>> fs/buffer.c:2828:42: error: 'io_cgrp_subsys_on_dfl_key' undeclared (first use in this function); did you mean 'misc_cgrp_subsys_on_dfl_key'?
2828 | cgroup_subsys_on_dfl(io_cgrp_subsys)) {
| ^~~~~~~~~~~~~~
include/linux/compiler.h:19:53: note: in definition of macro 'likely_notrace'
19 | #define likely_notrace(x) __builtin_expect(!!(x), 1)
| ^
include/linux/jump_label.h:511:56: note: in expansion of macro 'static_key_enabled'
511 | #define static_branch_likely(x) likely_notrace(static_key_enabled(&(x)->key))
| ^~~~~~~~~~~~~~~~~~
include/linux/cgroup.h:95:9: note: in expansion of macro 'static_branch_likely'
95 | static_branch_likely(&ss ## _on_dfl_key)
| ^~~~~~~~~~~~~~~~~~~~
fs/buffer.c:2828:21: note: in expansion of macro 'cgroup_subsys_on_dfl'
2828 | cgroup_subsys_on_dfl(io_cgrp_subsys)) {
| ^~~~~~~~~~~~~~~~~~~~
>> fs/buffer.c:2829:70: error: 'io_cgrp_subsys' undeclared (first use in this function); did you mean 'misc_cgrp_subsys'?
2829 | blkcg_css = cgroup_e_css(memcg_css->cgroup, &io_cgrp_subsys);
| ^~~~~~~~~~~~~~
| misc_cgrp_subsys
cc1: some warnings being treated as errors
vim +2826 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
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] buffer: Associate the meta bio with blkg from buffer page
2024-08-28 3:32 [PATCH] buffer: Associate the meta bio with blkg from buffer page Haifeng Xu
` (2 preceding siblings ...)
2024-08-29 17:43 ` kernel test robot
@ 2024-08-30 19:37 ` Tejun Heo
2024-08-31 6:11 ` Yu Kuai
3 siblings, 1 reply; 8+ messages in thread
From: Tejun Heo @ 2024-08-30 19:37 UTC (permalink / raw)
To: Haifeng Xu
Cc: viro, brauner, jack, tytso, yi.zhang, yukuai1, linux-ext4,
linux-block, linux-fsdevel, linux-kernel
Hello, Haifeng.
On Wed, Aug 28, 2024 at 11:32:24AM +0800, Haifeng Xu wrote:
...
> The filesystem is ext4(ordered). The meta data can be written out by
> writeback, but if there are too many dirty pages, we had to do
> checkpoint to write out the meta data in current thread context.
>
> In this case, the blkg of thread1 has set io.max, so the j_checkpoint_mutex
> can't be released and many threads must wait for it. However, the blkg from
> buffer page didn' set any io policy. Therefore, for the meta buffer head,
> we can associate the bio with blkg from the buffer page instead of current
> thread context.
>
> Signed-off-by: Haifeng Xu <haifeng.xu@shopee.com>
> ---
> fs/buffer.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/fs/buffer.c b/fs/buffer.c
> index e55ad471c530..a7889f258d0d 100644
> --- a/fs/buffer.c
> +++ b/fs/buffer.c
> @@ -2819,6 +2819,17 @@ static void submit_bh_wbc(blk_opf_t opf, struct buffer_head *bh,
> if (wbc) {
> wbc_init_bio(wbc, bio);
> wbc_account_cgroup_owner(wbc, bh->b_page, bh->b_size);
> + } else if (buffer_meta(bh)) {
> + struct folio *folio;
> + struct cgroup_subsys_state *memcg_css, *blkcg_css;
> +
> + folio = page_folio(bh->b_page);
> + memcg_css = mem_cgroup_css_from_folio(folio);
> + if (cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
> + cgroup_subsys_on_dfl(io_cgrp_subsys)) {
> + blkcg_css = cgroup_e_css(memcg_css->cgroup, &io_cgrp_subsys);
> + bio_associate_blkg_from_css(bio, blkcg_css);
I think the right way to do it is marking the bio with REQ_META and
implement forced charging in blk-throtl similar to blk-iocost.
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] buffer: Associate the meta bio with blkg from buffer page
2024-08-30 19:37 ` Tejun Heo
@ 2024-08-31 6:11 ` Yu Kuai
2024-08-31 8:03 ` Tejun Heo
0 siblings, 1 reply; 8+ messages in thread
From: Yu Kuai @ 2024-08-31 6:11 UTC (permalink / raw)
To: Tejun Heo, Haifeng Xu
Cc: viro, brauner, jack, tytso, yi.zhang, yukuai1, linux-ext4,
linux-block, linux-fsdevel, linux-kernel, yukuai (C)
Hi, Tejun!
在 2024/08/31 3:37, Tejun Heo 写道:
> Hello, Haifeng.
>
> On Wed, Aug 28, 2024 at 11:32:24AM +0800, Haifeng Xu wrote:
> ...
>> The filesystem is ext4(ordered). The meta data can be written out by
>> writeback, but if there are too many dirty pages, we had to do
>> checkpoint to write out the meta data in current thread context.
>>
>> In this case, the blkg of thread1 has set io.max, so the j_checkpoint_mutex
>> can't be released and many threads must wait for it. However, the blkg from
>> buffer page didn' set any io policy. Therefore, for the meta buffer head,
>> we can associate the bio with blkg from the buffer page instead of current
>> thread context.
>>
>> Signed-off-by: Haifeng Xu <haifeng.xu@shopee.com>
>> ---
>> fs/buffer.c | 11 +++++++++++
>> 1 file changed, 11 insertions(+)
>>
>> diff --git a/fs/buffer.c b/fs/buffer.c
>> index e55ad471c530..a7889f258d0d 100644
>> --- a/fs/buffer.c
>> +++ b/fs/buffer.c
>> @@ -2819,6 +2819,17 @@ static void submit_bh_wbc(blk_opf_t opf, struct buffer_head *bh,
>> if (wbc) {
>> wbc_init_bio(wbc, bio);
>> wbc_account_cgroup_owner(wbc, bh->b_page, bh->b_size);
>> + } else if (buffer_meta(bh)) {
>> + struct folio *folio;
>> + struct cgroup_subsys_state *memcg_css, *blkcg_css;
>> +
>> + folio = page_folio(bh->b_page);
>> + memcg_css = mem_cgroup_css_from_folio(folio);
>> + if (cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
>> + cgroup_subsys_on_dfl(io_cgrp_subsys)) {
>> + blkcg_css = cgroup_e_css(memcg_css->cgroup, &io_cgrp_subsys);
>> + bio_associate_blkg_from_css(bio, blkcg_css);
>
> I think the right way to do it is marking the bio with REQ_META and
> implement forced charging in blk-throtl similar to blk-iocost.
This is the exact thing I did in the code I attached in the other
thread, do you take a look?
https://lore.kernel.org/all/97fc38e6-a226-5e22-efc2-4405beb6d75b@huaweicloud.com/
Thanks,
Kuai
>
> Thanks.
>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] buffer: Associate the meta bio with blkg from buffer page
2024-08-31 6:11 ` Yu Kuai
@ 2024-08-31 8:03 ` Tejun Heo
2024-08-31 9:48 ` Yu Kuai
0 siblings, 1 reply; 8+ messages in thread
From: Tejun Heo @ 2024-08-31 8:03 UTC (permalink / raw)
To: Yu Kuai
Cc: Haifeng Xu, viro, brauner, jack, tytso, yi.zhang, linux-ext4,
linux-block, linux-fsdevel, linux-kernel, yukuai (C)
Hello,
On Sat, Aug 31, 2024 at 02:11:08PM +0800, Yu Kuai wrote:
...
> > I think the right way to do it is marking the bio with REQ_META and
> > implement forced charging in blk-throtl similar to blk-iocost.
>
> This is the exact thing I did in the code I attached in the other
> thread, do you take a look?
>
> https://lore.kernel.org/all/97fc38e6-a226-5e22-efc2-4405beb6d75b@huaweicloud.com/
Sorry about missing it but yeah that *looks* like the right direction to be
headed. Would you mind testing it and turning it into a proper patch?
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] buffer: Associate the meta bio with blkg from buffer page
2024-08-31 8:03 ` Tejun Heo
@ 2024-08-31 9:48 ` Yu Kuai
0 siblings, 0 replies; 8+ messages in thread
From: Yu Kuai @ 2024-08-31 9:48 UTC (permalink / raw)
To: Tejun Heo, Yu Kuai
Cc: Haifeng Xu, viro, brauner, jack, tytso, yi.zhang, linux-ext4,
linux-block, linux-fsdevel, linux-kernel, yukuai (C)
Hi,
在 2024/08/31 16:03, Tejun Heo 写道:
> Hello,
>
> On Sat, Aug 31, 2024 at 02:11:08PM +0800, Yu Kuai wrote:
> ...
>>> I think the right way to do it is marking the bio with REQ_META and
>>> implement forced charging in blk-throtl similar to blk-iocost.
>>
>> This is the exact thing I did in the code I attached in the other
>> thread, do you take a look?
>>
>> https://lore.kernel.org/all/97fc38e6-a226-5e22-efc2-4405beb6d75b@huaweicloud.com/
>
> Sorry about missing it but yeah that *looks* like the right direction to be
> headed. Would you mind testing it and turning it into a proper patch?
Of course.
Thanks!
Kuai
>
> Thanks.
>
^ permalink raw reply [flat|nested] 8+ messages in thread