On Mon, 27 Feb 2017 15:30:30 -0800 Stephen Hemminger <stephen@xxxxxxxxxxxxxxxxxx> wrote: > Something in SCSI in 4.11 broke booting on Hyper-V Generation 2 VM with 8 VCPU and 4G of memory. > Both Linus's current tree (4.11 pre-rc1) and linux-next fail in a similar manner. It looks like some error > in SCSI device detection because there is only a single device. > > The offending commit causing the regression is: > > $ git bisect bad > e9c787e65c0c36529745be47d490d998b4b6e589 is the first bad commit > commit e9c787e65c0c36529745be47d490d998b4b6e589 > Author: Christoph Hellwig <hch@xxxxxx> > Date: Mon Jan 2 21:55:26 2017 +0300 > > scsi: allocate scsi_cmnd structures as part of struct request > > Rely on the new block layer functionality to allocate additional driver > specific data behind struct request instead of implementing it in SCSI > itѕelf. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > Acked-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx> > Reviewed-by: Hannes Reinecke <hare@xxxxxxxx> > Signed-off-by: Jens Axboe <axboe@xxxxxx> > > :040000 040000 6ff016fcdae227efeb19c1c301b17ccd7ea35da6 70d79f99d9b79ecf4dccbe067fc697219f5c78da M drivers > :040000 040000 a672ff52df8b2c211b3f98cae4a88d8a96ccde0b 1aaaed7de0994f597c7f8290c722a0b4a7789429 M include > > I checked and tree is current and up to date and includes > commit ee5242360424b9b967454e9183767323d10cf985 > Author: Christoph Hellwig <hch@xxxxxx> > Date: Tue Feb 21 10:04:55 2017 +0100 > > scsi: zero per-cmd driver data before each I/O > > Kernel config is attached. It started with Ubuntu config, but then did localmodconfig and pruned > out unnecessary stuff. > This problem I am seeing looks like the one addressed by: Fixes: ee5242360424 ("scsi: zero per-cmd driver data before each I/O") but that is already in linux-next. Noticed another place where memset(of the data was being done not the extra bits. Tried this, but didn't fix it either... diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index ba2286652ff6..7e0463e78ff4 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1850,7 +1850,7 @@ static int scsi_mq_prep_fn(struct request *req) /* zero out the cmd, except for the embedded scsi_request */ memset((char *)cmd + sizeof(cmd->req), 0, - sizeof(*cmd) - sizeof(cmd->req)); + sizeof(*cmd) - sizeof(cmd->req) + sdev->host->hostt->cmd_size); req->special = cmd;