diff for duplicates of <2499737.s63AaEEcmZ@natalenko.name> diff --git a/a/1.txt b/N1/1.txt index 106c92b..b2ea444 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,46 +1,45 @@ -=46or v4 with regard to suspend/resume: +For v4 with regard to suspend/resume: Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name> -On pond=C4=9Bl=C3=AD 11. z=C3=A1=C5=99=C3=AD 2017 13:10:11 CEST Ming Lei wr= -ote: +On pondělí 11. září 2017 13:10:11 CEST Ming Lei wrote: > Hi, ->=20 +> > The current SCSI quiesce isn't safe and easy to trigger I/O deadlock. ->=20 +> > Once SCSI device is put into QUIESCE, no new request except for > RQF_PREEMPT can be dispatched to SCSI successfully, and > scsi_device_quiesce() just simply waits for completion of I/Os > dispatched to SCSI stack. It isn't enough at all. ->=20 +> > Because new request still can be comming, but all the allocated > requests can't be dispatched successfully, so request pool can be > consumed up easily. ->=20 +> > Then request with RQF_PREEMPT can't be allocated and wait forever, > meantime scsi_device_resume() waits for completion of RQF_PREEMPT, > then system hangs forever, such as during system suspend or > sending SCSI domain alidation. ->=20 +> > Both IO hang inside system suspend[1] or SCSI domain validation > were reported before. ->=20 +> > This patch introduces preempt freeze, and solves the issue > by preempt freezing block queue during SCSI quiesce, and allows > to allocate request of RQF_PREEMPT when queue is in this state. ->=20 +> > Oleksandr verified that V3 does fix the hang during suspend/resume, > and Cathy verified that revised V3 fixes hang in sending > SCSI domain validation. ->=20 +> > Both SCSI and SCSI_MQ have this IO deadlock issue, this patch fixes > them all by introducing/unifying blk_freeze_queue_preempt() and > blk_unfreeze_queue_preempt(), and cleanup is done together. ->=20 +> > The patchset can be found in the following gitweb: ->=20 +> > https://github.com/ming1/linux/tree/blk_safe_scsi_quiesce_V4 ->=20 +> > V4: > - reorganize patch order to make it more reasonable > - support nested preempt freeze, as required by SCSI transport spi @@ -50,28 +49,28 @@ ote: > - rename blk_mq_[freeze|unfreeze]_queue() in one patch > - rename .mq_freeze_wq and .mq_freeze_depth > - improve comment ->=20 +> > V3: > - introduce q->preempt_unfreezing to fix one bug of preempt freeze > - call blk_queue_enter_live() only when queue is preempt frozen > - cleanup a bit on the implementation of preempt freeze > - only patch 6 and 7 are changed ->=20 +> > V2: > - drop the 1st patch in V1 because percpu_ref_is_dying() is > enough as pointed by Tejun > - introduce preempt version of blk_[freeze|unfreeze]_queue > - sync between preempt freeze and normal freeze > - fix warning from percpu-refcount as reported by Oleksandr ->=20 ->=20 -> [1] https://marc.info/?t=3D150340250100013&r=3D3&w=3D2 ->=20 ->=20 +> +> +> [1] https://marc.info/?t=150340250100013&r=3&w=2 +> +> > Thanks, > Ming ->=20 ->=20 +> +> > Ming Lei (10): > blk-mq: only run hw queues for blk-mq > block: tracking request allocation with q_usage_counter @@ -84,13 +83,12 @@ ote: > frozen > SCSI: transport_spi: resume a quiesced device > SCSI: preempt freeze block queue when SCSI device is put into quiesce ->=20 +> > block/bfq-iosched.c | 2 +- > block/blk-cgroup.c | 8 +- > block/blk-core.c | 95 ++++++++++++++++---- > block/blk-mq.c | 180 -> ++++++++++++++++++++++++++++---------- block/blk-mq.h = -|=20 +> ++++++++++++++++++++++++++++---------- block/blk-mq.h | > 1 - > block/blk-timeout.c | 2 +- > block/blk.h | 12 +++ diff --git a/a/content_digest b/N1/content_digest index 75f1379..453edaf 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -14,49 +14,48 @@ " Cathy Avery <cavery@redhat.com>\0" "\00:1\0" "b\0" - "=46or v4 with regard to suspend/resume:\n" + "For v4 with regard to suspend/resume:\n" "\n" "Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>\n" "\n" - "On pond=C4=9Bl=C3=AD 11. z=C3=A1=C5=99=C3=AD 2017 13:10:11 CEST Ming Lei wr=\n" - "ote:\n" + "On pond\304\233l\303\255 11. z\303\241\305\231\303\255 2017 13:10:11 CEST Ming Lei wrote:\n" "> Hi,\n" - ">=20\n" + "> \n" "> The current SCSI quiesce isn't safe and easy to trigger I/O deadlock.\n" - ">=20\n" + "> \n" "> Once SCSI device is put into QUIESCE, no new request except for\n" "> RQF_PREEMPT can be dispatched to SCSI successfully, and\n" "> scsi_device_quiesce() just simply waits for completion of I/Os\n" "> dispatched to SCSI stack. It isn't enough at all.\n" - ">=20\n" + "> \n" "> Because new request still can be comming, but all the allocated\n" "> requests can't be dispatched successfully, so request pool can be\n" "> consumed up easily.\n" - ">=20\n" + "> \n" "> Then request with RQF_PREEMPT can't be allocated and wait forever,\n" "> meantime scsi_device_resume() waits for completion of RQF_PREEMPT,\n" "> then system hangs forever, such as during system suspend or\n" "> sending SCSI domain alidation.\n" - ">=20\n" + "> \n" "> Both IO hang inside system suspend[1] or SCSI domain validation\n" "> were reported before.\n" - ">=20\n" + "> \n" "> This patch introduces preempt freeze, and solves the issue\n" "> by preempt freezing block queue during SCSI quiesce, and allows\n" "> to allocate request of RQF_PREEMPT when queue is in this state.\n" - ">=20\n" + "> \n" "> Oleksandr verified that V3 does fix the hang during suspend/resume,\n" "> and Cathy verified that revised V3 fixes hang in sending\n" "> SCSI domain validation.\n" - ">=20\n" + "> \n" "> Both SCSI and SCSI_MQ have this IO deadlock issue, this patch fixes\n" "> them all by introducing/unifying blk_freeze_queue_preempt() and\n" "> blk_unfreeze_queue_preempt(), and cleanup is done together.\n" - ">=20\n" + "> \n" "> The patchset can be found in the following gitweb:\n" - ">=20\n" + "> \n" "> \thttps://github.com/ming1/linux/tree/blk_safe_scsi_quiesce_V4\n" - ">=20\n" + "> \n" "> V4:\n" "> \t- reorganize patch order to make it more reasonable\n" "> \t- support nested preempt freeze, as required by SCSI transport spi\n" @@ -66,28 +65,28 @@ "> \t- rename blk_mq_[freeze|unfreeze]_queue() in one patch\n" "> \t- rename .mq_freeze_wq and .mq_freeze_depth\n" "> \t- improve comment\n" - ">=20\n" + "> \n" "> V3:\n" "> \t- introduce q->preempt_unfreezing to fix one bug of preempt freeze\n" "> \t- call blk_queue_enter_live() only when queue is preempt frozen\n" "> \t- cleanup a bit on the implementation of preempt freeze\n" "> \t- only patch 6 and 7 are changed\n" - ">=20\n" + "> \n" "> V2:\n" "> \t- drop the 1st patch in V1 because percpu_ref_is_dying() is\n" "> \tenough as pointed by Tejun\n" "> \t- introduce preempt version of blk_[freeze|unfreeze]_queue\n" "> \t- sync between preempt freeze and normal freeze\n" "> \t- fix warning from percpu-refcount as reported by Oleksandr\n" - ">=20\n" - ">=20\n" - "> [1] https://marc.info/?t=3D150340250100013&r=3D3&w=3D2\n" - ">=20\n" - ">=20\n" + "> \n" + "> \n" + "> [1] https://marc.info/?t=150340250100013&r=3&w=2\n" + "> \n" + "> \n" "> Thanks,\n" "> Ming\n" - ">=20\n" - ">=20\n" + "> \n" + "> \n" "> Ming Lei (10):\n" "> blk-mq: only run hw queues for blk-mq\n" "> block: tracking request allocation with q_usage_counter\n" @@ -100,13 +99,12 @@ "> frozen\n" "> SCSI: transport_spi: resume a quiesced device\n" "> SCSI: preempt freeze block queue when SCSI device is put into quiesce\n" - ">=20\n" + "> \n" "> block/bfq-iosched.c | 2 +-\n" "> block/blk-cgroup.c | 8 +-\n" "> block/blk-core.c | 95 ++++++++++++++++----\n" "> block/blk-mq.c | 180\n" - "> ++++++++++++++++++++++++++++---------- block/blk-mq.h =\n" - "|=20\n" + "> ++++++++++++++++++++++++++++---------- block/blk-mq.h | \n" "> 1 -\n" "> block/blk-timeout.c | 2 +-\n" "> block/blk.h | 12 +++\n" @@ -121,4 +119,4 @@ "> include/linux/blkdev.h | 32 +++++--\n" > 16 files changed, 313 insertions(+), 104 deletions(-) -f468b44b7e2866e67711fadc7702edd75075d71b402265f811cd926f7f45fedb +4f521e3926a6e8359f289be2e454d2ce9931c2982bed72e4a5665d62497b9440
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.