summaryrefslogtreecommitdiff
path: root/include/linux/blkdev.h
diff options
context:
space:
mode:
authorMing Lei <ming.lei@redhat.com>2024-11-27 21:51:28 +0800
committerJens Axboe <axboe@kernel.dk>2024-12-23 08:17:22 -0700
commit6f491a8d4b92d1a840fd9209cba783c84437d0b7 (patch)
tree33758764e2e19d53d7298c0935478d6c4110af68 /include/linux/blkdev.h
parentaff09dc1fd3a165289011ab23cc3b46978ec741c (diff)
downloadlwn-6f491a8d4b92d1a840fd9209cba783c84437d0b7.tar.gz
lwn-6f491a8d4b92d1a840fd9209cba783c84437d0b7.zip
block: track disk DEAD state automatically for modeling queue freeze lockdep
Now we only verify the outmost freeze & unfreeze in current context in case that !q->mq_freeze_depth, so it is reliable to save disk DEAD state when we want to lock the freeze queue since the state is one per-task variable now. Doing this way can kill lots of false positive when freeze queue is called before adding disk[1]. [1] https://lore.kernel.org/linux-block/6741f6b2.050a0220.1cc393.0017.GAE@google.com/ Signed-off-by: Ming Lei <ming.lei@redhat.com> Link: https://lore.kernel.org/r/20241127135133.3952153-3-ming.lei@redhat.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r--include/linux/blkdev.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 378d3a1a22fc..522cf8eef66c 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -581,6 +581,8 @@ struct request_queue {
#ifdef CONFIG_LOCKDEP
struct task_struct *mq_freeze_owner;
int mq_freeze_owner_depth;
+ /* Records disk state in current context, used in unfreeze queue */
+ bool mq_freeze_disk_dead;
#endif
wait_queue_head_t mq_freeze_wq;
/*