lkml.org 
[lkml]   [2021]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH 3/3] loop: Charge i/o to mem and blk cg
> This is how I understand it:
>
> --- a/drivers/block/loop.c
> +++ b/drivers/block/loop.c
> @@ -996,6 +996,7 @@ static void loop_queue_work(struct loop_device *lo, struct loop_cmd *cmd)
> rb_insert_color(&worker->rb_node, &lo->worker_tree);
> queue_work:
> if (worker) {
> + WARN_ON_ONCE(worker->blkcg_css != cmd->blkcg_css);

Yes, this is correct. Though the check here seems a bit obvious to me
- it must be correct because we assign worker above:

if (cur_worker->blkcg_css == cmd->blkcg_css) {
worker = cur_worker;
break;

or when we construct the worker:

worker->blkcg_css = cmd->blkcg_css;

I think this WARN_ON_ONCE check might be more interesting in
loop_process_work which invokes loop_handle_cmd and actually uses
cmd->blkcg_css. In any event, your understanding is correct here.

> /*
> * We need to remove from the idle list here while
> * holding the lock so that the idle timer doesn't
> @@ -2106,6 +2107,8 @@ static blk_status_t loop_queue_rq(struct blk_mq_hw_ctx *hctx,
> cmd->memcg_css = NULL;
> #ifdef CONFIG_BLK_CGROUP
> if (rq->bio && rq->bio->bi_blkg) {
> + /* reference to blkcg_css will be held by loop_worker (outlives
> + * cmd) or it is the eternal root css */

Yes, this is correct. Feel free to add my Acked-by to such a patch

\
 
 \ /
  Last update: 2021-06-30 16:51    [W:0.095 / U:0.056 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site