From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Steigerwald Subject: Re: [PATCH] Change synchronize_rcu() in scsi_device_quiesce() into synchronize_sched() Date: Fri, 16 Mar 2018 22:42:40 +0100 Message-ID: <1890027.S58v862tbq@merkaba> References: <20180316173516.3048-1-bart.vanassche@wdc.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8BIT Return-path: In-Reply-To: <20180316173516.3048-1-bart.vanassche@wdc.com> Sender: stable-owner@vger.kernel.org To: Bart Van Assche Cc: "Martin K . Petersen" , "James E . J . Bottomley" , linux-scsi@vger.kernel.org, Hannes Reinecke , Ming Lei , Christoph Hellwig , Johannes Thumshirn , Tejun Heo , Oleksandr Natalenko , stable@vger.kernel.org List-Id: linux-scsi@vger.kernel.org Hello Bart. What is this one about? Fix for the regression I (and others?) reported?¹ [1] [Bug 199077] [Possible REGRESSION, 4.16-rc4] Error updating SMART data during runtime and boot failures with blk_mq_terminate_expired in backtrace https://bugzilla.kernel.org/show_bug.cgi?id=199077 Thanks, Martin Bart Van Assche - 16.03.18, 18:35: > Since blk_queue_enter() uses rcu_read_lock_sched() scsi_device_quiesce() > must use synchronize_sched(). > > Reported-by: Tejun Heo > Fixes: 3a0a529971ec ("block, scsi: Make SCSI quiesce and resume work > reliably") Signed-off-by: Bart Van Assche > Cc: Hannes Reinecke > Cc: Ming Lei > Cc: Christoph Hellwig > Cc: Johannes Thumshirn > Cc: Tejun Heo > Cc: Oleksandr Natalenko > Cc: Martin Steigerwald > Cc: stable@vger.kernel.org # v4.15 > --- > drivers/scsi/scsi_lib.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index 1d83f29aee74..0b99ee2fbbb5 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -3014,7 +3014,7 @@ scsi_device_quiesce(struct scsi_device *sdev) > * unfreeze even if the queue was already frozen before this function > * was called. See also https://lwn.net/Articles/573497/. > */ > - synchronize_rcu(); > + synchronize_sched(); > blk_mq_unfreeze_queue(q); > > mutex_lock(&sdev->state_mutex); -- Martin From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mondschein.lichtvoll.de ([194.150.191.11]:48193 "EHLO mail.lichtvoll.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751236AbeCPVmn (ORCPT ); Fri, 16 Mar 2018 17:42:43 -0400 From: Martin Steigerwald To: Bart Van Assche Cc: "Martin K . Petersen" , "James E . J . Bottomley" , linux-scsi@vger.kernel.org, Hannes Reinecke , Ming Lei , Christoph Hellwig , Johannes Thumshirn , Tejun Heo , Oleksandr Natalenko , stable@vger.kernel.org Subject: Re: [PATCH] Change synchronize_rcu() in scsi_device_quiesce() into synchronize_sched() Date: Fri, 16 Mar 2018 22:42:40 +0100 Message-ID: <1890027.S58v862tbq@merkaba> In-Reply-To: <20180316173516.3048-1-bart.vanassche@wdc.com> References: <20180316173516.3048-1-bart.vanassche@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT Content-Type: text/plain; charset="iso-8859-1" Sender: stable-owner@vger.kernel.org List-ID: Hello Bart. What is this one about? Fix for the regression I (and others?) reported?� [1] [Bug 199077] [Possible REGRESSION, 4.16-rc4] Error updating SMART data during runtime and boot failures with blk_mq_terminate_expired in backtrace https://bugzilla.kernel.org/show_bug.cgi?id=199077 Thanks, Martin Bart Van Assche - 16.03.18, 18:35: > Since blk_queue_enter() uses rcu_read_lock_sched() scsi_device_quiesce() > must use synchronize_sched(). > > Reported-by: Tejun Heo > Fixes: 3a0a529971ec ("block, scsi: Make SCSI quiesce and resume work > reliably") Signed-off-by: Bart Van Assche > Cc: Hannes Reinecke > Cc: Ming Lei > Cc: Christoph Hellwig > Cc: Johannes Thumshirn > Cc: Tejun Heo > Cc: Oleksandr Natalenko > Cc: Martin Steigerwald > Cc: stable@vger.kernel.org # v4.15 > --- > drivers/scsi/scsi_lib.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index 1d83f29aee74..0b99ee2fbbb5 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -3014,7 +3014,7 @@ scsi_device_quiesce(struct scsi_device *sdev) > * unfreeze even if the queue was already frozen before this function > * was called. See also https://lwn.net/Articles/573497/. > */ > - synchronize_rcu(); > + synchronize_sched(); > blk_mq_unfreeze_queue(q); > > mutex_lock(&sdev->state_mutex); -- Martin