diff mbox

Boot regression (was "Re: [PATCH] genhd: Do not hold event lock when scheduling workqueue elements")

Message ID 20170214134736.GA19620@lst.de (mailing list archive)
State New, archived
Headers show

Commit Message

Christoph Hellwig Feb. 14, 2017, 1:47 p.m. UTC
Hi Dexuan,

can you try the hack below for now?  I disable the TUR call from
sd_check_events, which I think your VM is hanging on.  The checks
it does on the sense data look a bit fishy, but so far I've not
identified a possible root cause.

Comments

Dexuan Cui Feb. 14, 2017, 2:17 p.m. UTC | #1
> From: hch@lst.de [mailto:hch@lst.de]
> 
> Hi Dexuan,
> 
> can you try the hack below for now?  I disable the TUR call from
> sd_check_events, which I think your VM is hanging on.  The checks
> it does on the sense data look a bit fishy, but so far I've not
> identified a possible root cause.
> 
> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
> index 40b4038c019e..1502e87c2be9 100644
> --- a/drivers/scsi/sd.c
> +++ b/drivers/scsi/sd.c
> @@ -1457,9 +1457,13 @@ static unsigned int sd_check_events(struct
> gendisk *disk, unsigned int clearing)
>  	retval = -ENODEV;
> 
>  	if (scsi_block_when_processing_errors(sdp)) {
> +#if 0
>  		sshdr  = kzalloc(sizeof(*sshdr), GFP_KERNEL);
>  		retval = scsi_test_unit_ready(sdp, SD_TIMEOUT,
> SD_MAX_RETRIES,
>  					      sshdr);
> +#else
> +		retval = 0;
> +#endif
>  	}
> 
>  	/* failed to execute TUR, assume media not present */

Unluckily, the issue is still there.
Please see the attachment for the new log.
It looks somewhere we're still sending the cmd "Test Unit Ready", which
somehow hangs.

Thanks,
-- Dexuan
diff mbox

Patch

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 40b4038c019e..1502e87c2be9 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1457,9 +1457,13 @@  static unsigned int sd_check_events(struct gendisk *disk, unsigned int clearing)
 	retval = -ENODEV;
 
 	if (scsi_block_when_processing_errors(sdp)) {
+#if 0
 		sshdr  = kzalloc(sizeof(*sshdr), GFP_KERNEL);
 		retval = scsi_test_unit_ready(sdp, SD_TIMEOUT, SD_MAX_RETRIES,
 					      sshdr);
+#else
+		retval = 0;
+#endif
 	}
 
 	/* failed to execute TUR, assume media not present */