Re: [PATCH 03/12] blkcg: convert blkg_lookup_create to find closest blkg
From: Tejun Heo <tj@kernel.org>
Date: 2018-09-07 17:27:36
Also in:
cgroups, lkml
From: Tejun Heo <tj@kernel.org>
Date: 2018-09-07 17:27:36
Also in:
cgroups, lkml
Hello, On Thu, Sep 06, 2018 at 05:10:36PM -0400, Dennis Zhou wrote:
@@ -2021,9 +2021,7 @@ int bio_associate_blkg(struct bio *bio, struct blkcg_gq *blkg) { if (unlikely(bio->bi_blkg)) return -EBUSY; + bio->bi_blkg = blkg_try_get_closest(blkg); return 0;
It prolly would be a good idea to point out that the associated blkg might not be the same one passed in. Maybe this gets cleared up later in the series?
@@ -298,14 +297,23 @@ struct blkcg_gq *__blkg_lookup_create(struct blkcg *blkcg, while (true) { struct blkcg *pos = blkcg; struct blkcg *parent = blkcg_parent(blkcg); - - while (parent && !__blkg_lookup(parent, q, false)) { + struct blkcg_gq *ret_blkg = NULL; + + while (parent) { + blkg = __blkg_lookup(parent, q, false); + if (blkg) { + /* remember closest blkg */ + ret_blkg = blkg; + break; + } pos = parent; parent = blkcg_parent(parent); } blkg = blkg_create(pos, q, NULL); - if (pos == blkcg || IS_ERR(blkg)) + if (IS_ERR(blkg)) + return ret_blkg ?: q->root_blkg;
Why not ret_blkg here? Thanks. -- tejun