Skip to content

Commit

Permalink
block: really clone the block cgroup in bio_clone_blkg_association
Browse files Browse the repository at this point in the history
bio_clone_blkg_association is supposed to clone the associatation, but
actually ends up doing a search with a tryget.  As we know we have a
reference on the source cgroup just get an unconditional additional
reference to it and call it a day.  That also removes the need for
a RCU critical section.

Acked-by: Tejun Heo <[email protected]>
Reviewed-by: Johannes Thumshirn <[email protected]>
Signed-off-by: Christoph Hellwig <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
Christoph Hellwig authored and axboe committed Jun 29, 2020
1 parent db9819c commit d92c370
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions block/bio.c
Original file line number Diff line number Diff line change
Expand Up @@ -1737,12 +1737,12 @@ EXPORT_SYMBOL_GPL(bio_associate_blkg);
*/
void bio_clone_blkg_association(struct bio *dst, struct bio *src)
{
rcu_read_lock();

if (src->bi_blkg)
__bio_associate_blkg(dst, src->bi_blkg);

rcu_read_unlock();
if (src->bi_blkg) {
if (dst->bi_blkg)
blkg_put(dst->bi_blkg);
blkg_get(src->bi_blkg);
dst->bi_blkg = src->bi_blkg;
}
}
EXPORT_SYMBOL_GPL(bio_clone_blkg_association);
#endif /* CONFIG_BLK_CGROUP */
Expand Down

0 comments on commit d92c370

Please sign in to comment.