From: Ming Lei <ming.lei@redhat.com> To: Jens Axboe <axboe@kernel.dk>, linux-block@vger.kernel.org, linux-nvme@lists.infradead.org, Christoph Hellwig <hch@lst.de> Cc: Qian Cai <cai@redhat.com>, Sumit Saxena <sumit.saxena@broadcom.com>, John Garry <john.garry@huawei.com>, Kashyap Desai <kashyap.desai@broadcom.com>, Bart Van Assche <bvanassche@acm.org>, Hannes Reinecke <hare@suse.de> Subject: [PATCH V2 3/3] Revert "block: Fix a lockdep complaint triggered by request queue flushing" Date: Fri, 13 Nov 2020 09:27:22 +0800 [thread overview] Message-ID: <20201113012722.GD1012796@T590> (raw) In-Reply-To: <20201112075526.947079-4-ming.lei@redhat.com> From a519f421957a1205918e9bcc15087d15234e4e9f Mon Sep 17 00:00:00 2001 From: Ming Lei <ming.lei@redhat.com> Date: Thu, 12 Nov 2020 09:56:02 +0800 Subject: [PATCH V2 3/3] Revert "block: Fix a lockdep complaint triggered by request queue flushing" This reverts commit b3c6a59975415bde29cfd76ff1ab008edbf614a9. Now we can avoid nvme-loop lockdep warning of 'lockdep possible recursive locking' by nvme-loop's lock class, no need to apply dynamically allocated lock class key, so revert commit b3c6a5997541("block: Fix a lockdep complaint triggered by request queue flushing"). This way fixes horrible SCSI probe delay issue on megaraid_sas(host_tagset is 1), and it is reported the whole probe may take more than half an hour. The reason is that synchronize_rcu() is implied in lockdep_unregister_key() which is called from each hctx's release handler, and some SCSI hosts can support too many hw queues, meantime generic SCSI probe may synchronously create and destroy lots of MQ request_queues for non-existent devices. Another benefit is that lockdep doesn't maintain so many runtime lock class for fq->mq_flush_lock which is per-hctx, then lock validation can be improved much. Reported-by: Qian Cai <cai@redhat.com> Cc: Sumit Saxena <sumit.saxena@broadcom.com> Cc: John Garry <john.garry@huawei.com> Cc: Kashyap Desai <kashyap.desai@broadcom.com> Cc: Bart Van Assche <bvanassche@acm.org> Cc: Hannes Reinecke <hare@suse.de> Signed-off-by: Ming Lei <ming.lei@redhat.com> --- V2: - add more commit log block/blk-flush.c | 5 ----- block/blk.h | 1 - 2 files changed, 6 deletions(-) diff --git a/block/blk-flush.c b/block/blk-flush.c index 657743524e15..c64f049226f6 100644 --- a/block/blk-flush.c +++ b/block/blk-flush.c @@ -69,7 +69,6 @@ #include <linux/blkdev.h> #include <linux/gfp.h> #include <linux/blk-mq.h> -#include <linux/lockdep.h> #include "blk.h" #include "blk-mq.h" @@ -469,9 +468,6 @@ struct blk_flush_queue *blk_alloc_flush_queue(int node, int cmd_size, INIT_LIST_HEAD(&fq->flush_queue[1]); INIT_LIST_HEAD(&fq->flush_data_in_flight); - lockdep_register_key(&fq->key); - lockdep_set_class(&fq->mq_flush_lock, &fq->key); - return fq; fail_rq: @@ -486,7 +482,6 @@ void blk_free_flush_queue(struct blk_flush_queue *fq) if (!fq) return; - lockdep_unregister_key(&fq->key); kfree(fq->flush_rq); kfree(fq); } diff --git a/block/blk.h b/block/blk.h index dfab98465db9..806fd6537295 100644 --- a/block/blk.h +++ b/block/blk.h @@ -25,7 +25,6 @@ struct blk_flush_queue { struct list_head flush_data_in_flight; struct request *flush_rq; - struct lock_class_key key; spinlock_t mq_flush_lock; }; -- 2.25.4
WARNING: multiple messages have this Message-ID (diff)
From: Ming Lei <ming.lei@redhat.com> To: Jens Axboe <axboe@kernel.dk>, linux-block@vger.kernel.org, linux-nvme@lists.infradead.org, Christoph Hellwig <hch@lst.de> Cc: Bart Van Assche <bvanassche@acm.org>, Qian Cai <cai@redhat.com>, John Garry <john.garry@huawei.com>, Kashyap Desai <kashyap.desai@broadcom.com>, Sumit Saxena <sumit.saxena@broadcom.com>, Hannes Reinecke <hare@suse.de> Subject: [PATCH V2 3/3] Revert "block: Fix a lockdep complaint triggered by request queue flushing" Date: Fri, 13 Nov 2020 09:27:22 +0800 [thread overview] Message-ID: <20201113012722.GD1012796@T590> (raw) In-Reply-To: <20201112075526.947079-4-ming.lei@redhat.com> From a519f421957a1205918e9bcc15087d15234e4e9f Mon Sep 17 00:00:00 2001 From: Ming Lei <ming.lei@redhat.com> Date: Thu, 12 Nov 2020 09:56:02 +0800 Subject: [PATCH V2 3/3] Revert "block: Fix a lockdep complaint triggered by request queue flushing" This reverts commit b3c6a59975415bde29cfd76ff1ab008edbf614a9. Now we can avoid nvme-loop lockdep warning of 'lockdep possible recursive locking' by nvme-loop's lock class, no need to apply dynamically allocated lock class key, so revert commit b3c6a5997541("block: Fix a lockdep complaint triggered by request queue flushing"). This way fixes horrible SCSI probe delay issue on megaraid_sas(host_tagset is 1), and it is reported the whole probe may take more than half an hour. The reason is that synchronize_rcu() is implied in lockdep_unregister_key() which is called from each hctx's release handler, and some SCSI hosts can support too many hw queues, meantime generic SCSI probe may synchronously create and destroy lots of MQ request_queues for non-existent devices. Another benefit is that lockdep doesn't maintain so many runtime lock class for fq->mq_flush_lock which is per-hctx, then lock validation can be improved much. Reported-by: Qian Cai <cai@redhat.com> Cc: Sumit Saxena <sumit.saxena@broadcom.com> Cc: John Garry <john.garry@huawei.com> Cc: Kashyap Desai <kashyap.desai@broadcom.com> Cc: Bart Van Assche <bvanassche@acm.org> Cc: Hannes Reinecke <hare@suse.de> Signed-off-by: Ming Lei <ming.lei@redhat.com> --- V2: - add more commit log block/blk-flush.c | 5 ----- block/blk.h | 1 - 2 files changed, 6 deletions(-) diff --git a/block/blk-flush.c b/block/blk-flush.c index 657743524e15..c64f049226f6 100644 --- a/block/blk-flush.c +++ b/block/blk-flush.c @@ -69,7 +69,6 @@ #include <linux/blkdev.h> #include <linux/gfp.h> #include <linux/blk-mq.h> -#include <linux/lockdep.h> #include "blk.h" #include "blk-mq.h" @@ -469,9 +468,6 @@ struct blk_flush_queue *blk_alloc_flush_queue(int node, int cmd_size, INIT_LIST_HEAD(&fq->flush_queue[1]); INIT_LIST_HEAD(&fq->flush_data_in_flight); - lockdep_register_key(&fq->key); - lockdep_set_class(&fq->mq_flush_lock, &fq->key); - return fq; fail_rq: @@ -486,7 +482,6 @@ void blk_free_flush_queue(struct blk_flush_queue *fq) if (!fq) return; - lockdep_unregister_key(&fq->key); kfree(fq->flush_rq); kfree(fq); } diff --git a/block/blk.h b/block/blk.h index dfab98465db9..806fd6537295 100644 --- a/block/blk.h +++ b/block/blk.h @@ -25,7 +25,6 @@ struct blk_flush_queue { struct list_head flush_data_in_flight; struct request *flush_rq; - struct lock_class_key key; spinlock_t mq_flush_lock; }; -- 2.25.4 _______________________________________________ Linux-nvme mailing list Linux-nvme@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-nvme
next prev parent reply other threads:[~2020-11-13 1:27 UTC|newest] Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-12 7:55 [PATCH 0/3] blk-mq/nvme-loop: use nvme-loop's lock class for addressing lockdep false positive warning Ming Lei 2020-11-12 7:55 ` Ming Lei 2020-11-12 7:55 ` [PATCH 1/3] blk-mq: add new API of blk_mq_hctx_set_fq_lock_class Ming Lei 2020-11-12 7:55 ` Ming Lei 2020-11-16 17:26 ` Christoph Hellwig 2020-11-16 17:26 ` Christoph Hellwig 2020-11-17 1:04 ` Ming Lei 2020-11-17 1:04 ` Ming Lei 2020-11-17 1:16 ` Ming Lei 2020-11-17 1:16 ` Ming Lei 2020-11-17 6:46 ` Kashyap Desai 2020-11-17 6:46 ` Kashyap Desai 2020-11-12 7:55 ` [PATCH 2/3] nvme-loop: use blk_mq_hctx_set_fq_lock_class to set loop's lock class Ming Lei 2020-11-12 7:55 ` Ming Lei 2020-11-16 17:27 ` Christoph Hellwig 2020-11-16 17:27 ` Christoph Hellwig 2020-11-12 7:55 ` [PATCH 3/3] Revert "block: Fix a lockdep complaint triggered by request queue flushing" Ming Lei 2020-11-12 7:55 ` Ming Lei 2020-11-12 15:12 ` Bart Van Assche 2020-11-12 15:12 ` Bart Van Assche 2020-11-12 15:29 ` Bart Van Assche 2020-11-12 15:29 ` Bart Van Assche 2020-11-13 1:11 ` Ming Lei 2020-11-13 1:11 ` Ming Lei 2020-11-13 1:27 ` Ming Lei [this message] 2020-11-13 1:27 ` [PATCH V2 " Ming Lei 2020-11-16 17:27 ` Christoph Hellwig 2020-11-16 17:27 ` Christoph Hellwig 2020-11-25 1:31 ` [PATCH 0/3] blk-mq/nvme-loop: use nvme-loop's lock class for addressing lockdep false positive warning Ming Lei 2020-11-25 1:31 ` Ming Lei 2020-11-30 2:36 ` Ming Lei 2020-11-30 2:36 ` Ming Lei 2020-12-02 19:07 ` Qian Cai 2020-12-02 19:07 ` Qian Cai 2020-12-03 0:50 ` Ming Lei 2020-12-03 0:50 ` Ming Lei 2020-12-03 1:23 ` Qian Cai 2020-12-03 1:23 ` Qian Cai 2020-12-03 1:26 [PATCH V2 " Ming Lei 2020-12-03 1:26 ` [PATCH V2 3/3] Revert "block: Fix a lockdep complaint triggered by request queue flushing" Ming Lei 2020-12-03 6:44 ` Hannes Reinecke
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20201113012722.GD1012796@T590 \ --to=ming.lei@redhat.com \ --cc=axboe@kernel.dk \ --cc=bvanassche@acm.org \ --cc=cai@redhat.com \ --cc=hare@suse.de \ --cc=hch@lst.de \ --cc=john.garry@huawei.com \ --cc=kashyap.desai@broadcom.com \ --cc=linux-block@vger.kernel.org \ --cc=linux-nvme@lists.infradead.org \ --cc=sumit.saxena@broadcom.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.