From: Ming Lei <ming.lei@redhat.com>
To: Bart Van Assche <bvanassche@acm.org>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v10 0/8] blk-mq: Implement runtime power management
Date: Wed, 26 Sep 2018 10:55:24 +0800 [thread overview]
Message-ID: <20180926025523.GA9888@ming.t460p> (raw)
In-Reply-To: <20180921203122.49743-1-bvanassche@acm.org>
On Fri, Sep 21, 2018 at 01:31:14PM -0700, Bart Van Assche wrote:
> Hello Jens,
>
> One of the pieces that is missing before blk-mq can be made the default is
> implementing runtime power management support for blk-mq. This patch series
> not only implements runtime power management for blk-mq but also fixes a
> starvation issue in the power management code for the legacy block
> layer. Please consider this patch series for the upstream kernel.
>
> Thanks,
>
> Bart.
>
> Changes compared to v9:
> - Left out the patches that document the functions that iterate over requests
> and also the patch that introduces blk_mq_queue_rq_iter().
> - Simplified blk_pre_runtime_suspend(): left out the check whether no requests
> are in progress.
> - Fixed the race between blk_queue_enter(), queue freezing and runtime power
> management that Ming had identified.
> - Added a new patch that introduces percpu_ref_resurrect().
>
> Changes compared to v8:
> - Fixed the race that was reported by Jianchao.
> - Fixed another spelling issue in a source code comment.
>
> Changes compared to v7:
> - Addressed Jianchao's feedback about patch "Make blk_get_request() block for
> non-PM requests while suspended".
> - Added two new patches - one that documents the functions that iterate over
> requests and one that introduces a new function that iterates over all
> requests associated with a queue.
>
> Changes compared to v6:
> - Left out the patches that split RQF_PREEMPT in three flags.
> - Left out the patch that introduces the SCSI device state SDEV_SUSPENDED.
> - Left out the patch that introduces blk_pm_runtime_exit().
> - Restored the patch that changes the PREEMPT_ONLY flag into a counter.
>
> Changes compared to v5:
> - Introduced a new flag RQF_DV that replaces RQF_PREEMPT for SCSI domain
> validation.
> - Introduced a new request queue state QUEUE_FLAG_DV_ONLY for SCSI domain
> validation.
> - Instead of using SDEV_QUIESCE for both runtime suspend and SCSI domain
> validation, use that state for domain validation only and introduce a new
> state for runtime suspend, namely SDEV_QUIESCE.
> - Reallow system suspend during SCSI domain validation.
> - Moved the runtime resume call from the request allocation code into
> blk_queue_enter().
> - Instead of relying on q_usage_counter, iterate over the tag set to determine
> whether or not any requests are in flight.
>
> Changes compared to v4:
> - Dropped the patches "Give RQF_PREEMPT back its original meaning" and
> "Serialize queue freezing and blk_pre_runtime_suspend()".
> - Replaced "percpu_ref_read()" with "percpu_is_in_use()".
> - Inserted pm_request_resume() calls in the block layer request allocation
> code such that the context that submits a request no longer has to call
> pm_runtime_get().
>
> Changes compared to v3:
> - Avoid adverse interactions between system-wide suspend/resume and runtime
> power management by changing the PREEMPT_ONLY flag into a counter.
> - Give RQF_PREEMPT back its original meaning, namely that it is only set for
> ide_preempt requests.
> - Remove the flag BLK_MQ_REQ_PREEMPT.
> - Removed the pm_request_resume() call.
>
> Changes compared to v2:
> - Fixed the build for CONFIG_BLOCK=n.
> - Added a patch that introduces percpu_ref_read() in the percpu-counter code.
> - Added a patch that makes it easier to detect missing pm_runtime_get*() calls.
> - Addressed Jianchao's feedback including the comment about runtime overhead
> of switching a per-cpu counter to atomic mode.
>
> Changes compared to v1:
> - Moved the runtime power management code into a separate file.
> - Addressed Ming's feedback.
>
> Bart Van Assche (8):
> block: Move power management code into a new source file
> block, scsi: Change the preempt-only flag into a counter
> block: Split blk_pm_add_request() and blk_pm_put_request()
> block: Schedule runtime resume earlier
> percpu-refcount: Introduce percpu_ref_resurrect()
> block: Allow unfreezing of a queue while requests are in progress
> block: Make blk_get_request() block for non-PM requests while
> suspended
> blk-mq: Enable support for runtime power management
>
> block/Kconfig | 3 +
> block/Makefile | 1 +
> block/blk-core.c | 270 ++++----------------------------
> block/blk-mq-debugfs.c | 10 +-
> block/blk-mq.c | 4 +-
> block/blk-pm.c | 216 +++++++++++++++++++++++++
> block/blk-pm.h | 69 ++++++++
> block/elevator.c | 22 +--
> drivers/scsi/scsi_lib.c | 11 +-
> drivers/scsi/scsi_pm.c | 1 +
> drivers/scsi/sd.c | 1 +
> drivers/scsi/sr.c | 1 +
> include/linux/blk-pm.h | 24 +++
> include/linux/blkdev.h | 37 ++---
> include/linux/percpu-refcount.h | 1 +
> lib/percpu-refcount.c | 28 +++-
> 16 files changed, 401 insertions(+), 298 deletions(-)
> create mode 100644 block/blk-pm.c
> create mode 100644 block/blk-pm.h
> create mode 100644 include/linux/blk-pm.h
>
> --
> 2.19.0.444.g18242da7ef-goog
>
Looks fine,
Reviewed-by: Ming Lei <ming.lei@redhat.com>
thanks,
Ming
prev parent reply other threads:[~2018-09-26 2:55 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-21 20:31 [PATCH v10 0/8] blk-mq: Implement runtime power management Bart Van Assche
2018-09-21 20:31 ` [PATCH v10 1/8] block: Move power management code into a new source file Bart Van Assche
2018-09-26 14:22 ` Christoph Hellwig
2018-09-21 20:31 ` [PATCH v10 2/8] block, scsi: Change the preempt-only flag into a counter Bart Van Assche
2018-09-26 1:33 ` Martin K. Petersen
2018-09-21 20:31 ` [PATCH v10 3/8] block: Split blk_pm_add_request() and blk_pm_put_request() Bart Van Assche
2018-09-26 14:23 ` Christoph Hellwig
2018-09-21 20:31 ` [PATCH v10 4/8] block: Schedule runtime resume earlier Bart Van Assche
2018-09-26 14:25 ` Christoph Hellwig
2018-09-21 20:31 ` [PATCH v10 5/8] percpu-refcount: Introduce percpu_ref_resurrect() Bart Van Assche
2018-09-24 18:01 ` Tejun Heo
2018-09-24 20:43 ` Bart Van Assche
2018-09-26 16:59 ` Tejun Heo
2018-09-26 18:48 ` Bart Van Assche
2018-09-21 20:31 ` [PATCH v10 6/8] block: Allow unfreezing of a queue while requests are in progress Bart Van Assche
2018-09-26 14:25 ` Christoph Hellwig
2018-09-21 20:31 ` [PATCH v10 7/8] block: Make blk_get_request() block for non-PM requests while suspended Bart Van Assche
2018-09-26 14:27 ` Christoph Hellwig
2018-09-26 14:43 ` Johannes Thumshirn
2018-09-26 14:57 ` Christoph Hellwig
2018-09-26 15:06 ` Johannes Thumshirn
2018-09-26 18:24 ` Bart Van Assche
2018-09-27 6:54 ` Johannes Thumshirn
2018-09-21 20:31 ` [PATCH v10 8/8] blk-mq: Enable support for runtime power management Bart Van Assche
2018-09-26 14:28 ` Christoph Hellwig
2018-09-22 2:32 ` [PATCH v10 0/8] blk-mq: Implement " Jens Axboe
2018-09-26 2:55 ` Ming Lei [this message]
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=20180926025523.GA9888@ming.t460p \
--to=ming.lei@redhat.com \
--cc=axboe@kernel.dk \
--cc=bvanassche@acm.org \
--cc=hch@lst.de \
--cc=linux-block@vger.kernel.org \
/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: link
Be 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.