FAILED: patch "[PATCH] blk-cgroup: blk_cgroup_bio_start() should use irq-safe" failed to apply to 5.14-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 3c08b0931eedd04c530040499fadeccab50ed646 Mon Sep 17 00:00:00 2001
From: Tejun Heo <[email protected]>
Date: Thu, 14 Oct 2021 13:20:22 -1000
Subject: [PATCH] blk-cgroup: blk_cgroup_bio_start() should use irq-safe
operations on blkg->iostat_cpu
c3df5fb57fe8 ("cgroup: rstat: fix A-A deadlock on 32bit around u64_stats_sync") made u64_stats updates irq-safe to avoid A-A deadlocks. Unfortunately, the conversion missed one in blk_cgroup_bio_start(). Fix it.
block/blk-cgroup.c +3 -2
@@ -1897,10 +1897,11 @@ void blk_cgroup_bio_start(struct bio *bio) {int rwd =blk_cgroup_io_type (bio), cpu;struct blkg_iostat_set *bis; +unsigned long flags; cpu =get_cpu (); bis =per_cpu_ptr (bio->bi_blkg->iostat_cpu, cpu); -u64_stats_update_begin (&bis->sync); + flags =u64_stats_update_begin_irqsave (&bis->sync);/* * If the bio is flagged with BIO_CGROUP_ACCT it means this is a split
@@ -1912,7 +1913,7 @@ void blk_cgroup_bio_start(struct bio *bio) } bis->cur.ios[rwd]++; -u64_stats_update_end (&bis->sync); +u64_stats_update_end_irqrestore (&bis->sync, flags);if (cgroup_subsys_on_dfl (io_cgrp_subsys))cgroup_rstat_updated (bio->bi_blkg->blkcg->css.cgroup, cpu);put_cpu ();