From: Ming Lei <ming.lei@redhat.com>
To: Hannes Reinecke <hare@suse.de>
Cc: Bart Van Assche <bart.vanassche@wdc.com>,
Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, linux-scsi@vger.kernel.org,
Christoph Hellwig <hch@lst.de>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Oleksandr Natalenko <oleksandr@natalenko.name>,
Hannes Reinecke <hare@suse.com>,
Johannes Thumshirn <jthumshirn@suse.de>
Subject: Re: [PATCH v9 09/10] block, scsi: Make SCSI quiesce and resume work reliably
Date: Tue, 17 Oct 2017 18:43:22 +0800 [thread overview]
Message-ID: <20171017104321.GC17898@ming.t460p> (raw)
In-Reply-To: <df8b960d-e65d-3e5e-9de7-4423aa65ad92@suse.de>
On Tue, Oct 17, 2017 at 08:33:36AM +0200, Hannes Reinecke wrote:
> On 10/17/2017 01:29 AM, Bart Van Assche wrote:
> > The contexts from which a SCSI device can be quiesced or resumed are:
> > * Writing into /sys/class/scsi_device/*/device/state.
> > * SCSI parallel (SPI) domain validation.
> > * The SCSI device power management methods. See also scsi_bus_pm_ops.
> >
> > It is essential during suspend and resume that neither the filesystem
> > state nor the filesystem metadata in RAM changes. This is why while
> > the hibernation image is being written or restored that SCSI devices
> > are quiesced. The SCSI core quiesces devices through scsi_device_quiesce()
> > and scsi_device_resume(). In the SDEV_QUIESCE state execution of
> > non-preempt requests is deferred. This is realized by returning
> > BLKPREP_DEFER from inside scsi_prep_state_check() for quiesced SCSI
> > devices. Avoid that a full queue prevents power management requests
> > to be submitted by deferring allocation of non-preempt requests for
> > devices in the quiesced state. This patch has been tested by running
> > the following commands and by verifying that after resume the fio job
> > is still running:
> >
> (We've discussed this at ALPSS already:)
>
> How do you ensure that PREEMPT requests are not stuck in the queue
> _behind_ non-PREEMPT requests?
Once the PREEMP_ONLY flag is set, blk_mq_freeze_queue() is called for
draining up all requests in queue first, and new requests are prevented
from being allocated meantime.
So looks no such issue?
> Once they are in the queue the request are already allocated, so your
> deferred allocation won't work.
> _And_ deferred requests will be re-inserted at the head of the queue.
> Consequently the PREEMPT request will never ever scheduled during quiesce.
> How do you avoid such a scenario?
>From the implementation, no any PREEMPT request can be allocated once
scsi_device_quiesce() returns.
Also not see deferred requests in this patch, could you explain it a bit?
--
Ming
next prev parent reply other threads:[~2017-10-17 10:43 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-16 23:28 [PATCH v9 00/10] block, scsi, md: Improve suspend and resume Bart Van Assche
2017-10-16 23:28 ` [PATCH v9 01/10] md: Rename md_notifier into md_reboot_notifier Bart Van Assche
2017-10-17 6:23 ` Hannes Reinecke
2017-10-16 23:28 ` [PATCH v9 02/10] md: Introduce md_stop_all_writes() Bart Van Assche
2017-10-17 6:23 ` Hannes Reinecke
2017-10-16 23:28 ` [PATCH v9 03/10] md: Neither resync nor reshape while the system is frozen Bart Van Assche
2017-10-17 6:24 ` Hannes Reinecke
2017-10-16 23:28 ` [PATCH v9 04/10] block: Make q_usage_counter also track legacy requests Bart Van Assche
2017-10-17 6:25 ` Hannes Reinecke
2017-10-16 23:29 ` [PATCH v9 05/10] block: Introduce blk_get_request_flags() Bart Van Assche
2017-10-17 6:26 ` Hannes Reinecke
2017-10-16 23:29 ` [PATCH v9 06/10] block: Introduce BLK_MQ_REQ_PREEMPT Bart Van Assche
2017-10-17 6:26 ` Hannes Reinecke
2017-10-16 23:29 ` [PATCH v9 07/10] ide, scsi: Tell the block layer at request allocation time about preempt requests Bart Van Assche
2017-10-17 4:12 ` Martin K. Petersen
2017-10-17 6:27 ` Hannes Reinecke
2017-10-16 23:29 ` [PATCH v9 08/10] block: Add the QUEUE_FLAG_PREEMPT_ONLY request queue flag Bart Van Assche
2017-10-17 6:27 ` Hannes Reinecke
2017-10-16 23:29 ` [PATCH v9 09/10] block, scsi: Make SCSI quiesce and resume work reliably Bart Van Assche
2017-10-17 0:43 ` Ming Lei
2017-10-17 20:08 ` Bart Van Assche
2017-10-17 20:08 ` Bart Van Assche
2017-10-17 4:17 ` Martin K. Petersen
2017-10-17 6:33 ` Hannes Reinecke
2017-10-17 10:43 ` Ming Lei [this message]
2017-10-17 20:18 ` Bart Van Assche
2017-10-17 20:18 ` Bart Van Assche
2017-10-18 5:58 ` Hannes Reinecke
2017-10-16 23:29 ` [PATCH v9 10/10] block, nvme: Introduce blk_mq_req_flags_t Bart Van Assche
2017-10-17 6:34 ` Hannes Reinecke
2017-10-17 6:34 ` 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=20171017104321.GC17898@ming.t460p \
--to=ming.lei@redhat.com \
--cc=axboe@kernel.dk \
--cc=bart.vanassche@wdc.com \
--cc=hare@suse.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=jthumshirn@suse.de \
--cc=linux-block@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=oleksandr@natalenko.name \
/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.