aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-05-24 14:15:28 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-05-24 14:15:28 -0400
commit5b13966693c540f6a6a8d708842b3bce35d0fec7 (patch)
tree7943c2e1e67a8b57d8b846d97e70499a420d18a3
parentc5db6a3bdeb72f4238e1faefa4ce4eab7a64baea (diff)
parent32505876c0947a4cecc409dfbef1fc58ced6138d (diff)
Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI fixes from James Bottomley: "This is a set of five fixes: Two MAINTAINER email updates (urgent because the non-avagotech emails will start bouncing) an lpfc big endian oops fix, a 256 byte sector hang fix (to eliminate 256 byte sectors) and a storvsc fix which could cause test unit ready failures on bringup" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: MAINTAINERS: Revise lpfc maintainers for Avago Technologies ownership of Emulex MAINTAINERS, be2iscsi: change email domain sd: Disable support for 256 byte/sector disks lpfc: Fix breakage on big endian kernels storvsc: Set the SRB flags correctly when no data transfer is needed
-rw-r--r--MAINTAINERS13
-rw-r--r--drivers/scsi/be2iscsi/be.h6
-rw-r--r--drivers/scsi/be2iscsi/be_cmds.c6
-rw-r--r--drivers/scsi/be2iscsi/be_cmds.h6
-rw-r--r--drivers/scsi/be2iscsi/be_iscsi.c8
-rw-r--r--drivers/scsi/be2iscsi/be_iscsi.h8
-rw-r--r--drivers/scsi/be2iscsi/be_main.c12
-rw-r--r--drivers/scsi/be2iscsi/be_main.h10
-rw-r--r--drivers/scsi/be2iscsi/be_mgmt.c8
-rw-r--r--drivers/scsi/be2iscsi/be_mgmt.h8
-rw-r--r--drivers/scsi/lpfc/lpfc_scsi.c41
-rw-r--r--drivers/scsi/sd.c19
-rw-r--r--drivers/scsi/storvsc_drv.c3
13 files changed, 71 insertions, 77 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 60d24f224271..474bcb6c0bac 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3825,10 +3825,11 @@ M: David Woodhouse <dwmw2@infradead.org>
3825L: linux-embedded@vger.kernel.org 3825L: linux-embedded@vger.kernel.org
3826S: Maintained 3826S: Maintained
3827 3827
3828EMULEX LPFC FC SCSI DRIVER 3828EMULEX/AVAGO LPFC FC/FCOE SCSI DRIVER
3829M: James Smart <james.smart@emulex.com> 3829M: James Smart <james.smart@avagotech.com>
3830M: Dick Kennedy <dick.kennedy@avagotech.com>
3830L: linux-scsi@vger.kernel.org 3831L: linux-scsi@vger.kernel.org
3831W: http://sourceforge.net/projects/lpfcxxxx 3832W: http://www.avagotech.com
3832S: Supported 3833S: Supported
3833F: drivers/scsi/lpfc/ 3834F: drivers/scsi/lpfc/
3834 3835
@@ -8829,9 +8830,11 @@ F: drivers/misc/phantom.c
8829F: include/uapi/linux/phantom.h 8830F: include/uapi/linux/phantom.h
8830 8831
8831SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER 8832SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
8832M: Jayamohan Kallickal <jayamohan.kallickal@emulex.com> 8833M: Jayamohan Kallickal <jayamohan.kallickal@avagotech.com>
8834M: Minh Tran <minh.tran@avagotech.com>
8835M: John Soni Jose <sony.john-n@avagotech.com>
8833L: linux-scsi@vger.kernel.org 8836L: linux-scsi@vger.kernel.org
8834W: http://www.emulex.com 8837W: http://www.avagotech.com
8835S: Supported 8838S: Supported
8836F: drivers/scsi/be2iscsi/ 8839F: drivers/scsi/be2iscsi/
8837 8840
diff --git a/drivers/scsi/be2iscsi/be.h b/drivers/scsi/be2iscsi/be.h
index 81e83a65a193..32070099c333 100644
--- a/drivers/scsi/be2iscsi/be.h
+++ b/drivers/scsi/be2iscsi/be.h
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (C) 2005 - 2014 Emulex 2 * Copyright (C) 2005 - 2015 Avago Technologies
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -8,9 +8,9 @@
8 * Public License is included in this distribution in the file called COPYING. 8 * Public License is included in this distribution in the file called COPYING.
9 * 9 *
10 * Contact Information: 10 * Contact Information:
11 * linux-drivers@emulex.com 11 * linux-drivers@avagotech.com
12 * 12 *
13 * Emulex 13 * Avago Technologies
14 * 3333 Susan Street 14 * 3333 Susan Street
15 * Costa Mesa, CA 92626 15 * Costa Mesa, CA 92626
16 */ 16 */
diff --git a/drivers/scsi/be2iscsi/be_cmds.c b/drivers/scsi/be2iscsi/be_cmds.c
index 1028760b8a22..447cf7ce606e 100644
--- a/drivers/scsi/be2iscsi/be_cmds.c
+++ b/drivers/scsi/be2iscsi/be_cmds.c
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (C) 2005 - 2014 Emulex 2 * Copyright (C) 2005 - 2015 Avago Technologies
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -8,9 +8,9 @@
8 * Public License is included in this distribution in the file called COPYING. 8 * Public License is included in this distribution in the file called COPYING.
9 * 9 *
10 * Contact Information: 10 * Contact Information:
11 * linux-drivers@emulex.com 11 * linux-drivers@avagotech.com
12 * 12 *
13 * Emulex 13 * Avago Technologies
14 * 3333 Susan Street 14 * 3333 Susan Street
15 * Costa Mesa, CA 92626 15 * Costa Mesa, CA 92626
16 */ 16 */
diff --git a/drivers/scsi/be2iscsi/be_cmds.h b/drivers/scsi/be2iscsi/be_cmds.h
index 98897434bcb4..f11d325fe696 100644
--- a/drivers/scsi/be2iscsi/be_cmds.h
+++ b/drivers/scsi/be2iscsi/be_cmds.h
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (C) 2005 - 2014 Emulex 2 * Copyright (C) 2005 - 2015 Avago Technologies
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -8,9 +8,9 @@
8 * Public License is included in this distribution in the file called COPYING. 8 * Public License is included in this distribution in the file called COPYING.
9 * 9 *
10 * Contact Information: 10 * Contact Information:
11 * linux-drivers@emulex.com 11 * linux-drivers@avagotech.com
12 * 12 *
13 * Emulex 13 * Avago Technologies
14 * 3333 Susan Street 14 * 3333 Susan Street
15 * Costa Mesa, CA 92626 15 * Costa Mesa, CA 92626
16 */ 16 */
diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c
index b7391a3f9f0b..2f0700796842 100644
--- a/drivers/scsi/be2iscsi/be_iscsi.c
+++ b/drivers/scsi/be2iscsi/be_iscsi.c
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (C) 2005 - 2014 Emulex 2 * Copyright (C) 2005 - 2015 Avago Technologies
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -7,12 +7,12 @@
7 * as published by the Free Software Foundation. The full GNU General 7 * as published by the Free Software Foundation. The full GNU General
8 * Public License is included in this distribution in the file called COPYING. 8 * Public License is included in this distribution in the file called COPYING.
9 * 9 *
10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com) 10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
11 * 11 *
12 * Contact Information: 12 * Contact Information:
13 * linux-drivers@emulex.com 13 * linux-drivers@avagotech.com
14 * 14 *
15 * Emulex 15 * Avago Technologies
16 * 3333 Susan Street 16 * 3333 Susan Street
17 * Costa Mesa, CA 92626 17 * Costa Mesa, CA 92626
18 */ 18 */
diff --git a/drivers/scsi/be2iscsi/be_iscsi.h b/drivers/scsi/be2iscsi/be_iscsi.h
index e0b3b2d1f27a..0c84e1c0763a 100644
--- a/drivers/scsi/be2iscsi/be_iscsi.h
+++ b/drivers/scsi/be2iscsi/be_iscsi.h
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (C) 2005 - 2014 Emulex 2 * Copyright (C) 2005 - 2015 Avago Technologies
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -7,12 +7,12 @@
7 * as published by the Free Software Foundation. The full GNU General 7 * as published by the Free Software Foundation. The full GNU General
8 * Public License is included in this distribution in the file called COPYING. 8 * Public License is included in this distribution in the file called COPYING.
9 * 9 *
10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com) 10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
11 * 11 *
12 * Contact Information: 12 * Contact Information:
13 * linux-drivers@emulex.com 13 * linux-drivers@avagotech.com
14 * 14 *
15 * Emulex 15 * Avago Technologies
16 * 3333 Susan Street 16 * 3333 Susan Street
17 * Costa Mesa, CA 92626 17 * Costa Mesa, CA 92626
18 */ 18 */
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index 923a2b5a2439..1f74760ce86c 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (C) 2005 - 2014 Emulex 2 * Copyright (C) 2005 - 2015 Avago Technologies
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -7,12 +7,12 @@
7 * as published by the Free Software Foundation. The full GNU General 7 * as published by the Free Software Foundation. The full GNU General
8 * Public License is included in this distribution in the file called COPYING. 8 * Public License is included in this distribution in the file called COPYING.
9 * 9 *
10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com) 10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
11 * 11 *
12 * Contact Information: 12 * Contact Information:
13 * linux-drivers@emulex.com 13 * linux-drivers@avagotech.com
14 * 14 *
15 * Emulex 15 * Avago Technologies
16 * 3333 Susan Street 16 * 3333 Susan Street
17 * Costa Mesa, CA 92626 17 * Costa Mesa, CA 92626
18 */ 18 */
@@ -50,7 +50,7 @@ static unsigned int enable_msix = 1;
50 50
51MODULE_DESCRIPTION(DRV_DESC " " BUILD_STR); 51MODULE_DESCRIPTION(DRV_DESC " " BUILD_STR);
52MODULE_VERSION(BUILD_STR); 52MODULE_VERSION(BUILD_STR);
53MODULE_AUTHOR("Emulex Corporation"); 53MODULE_AUTHOR("Avago Technologies");
54MODULE_LICENSE("GPL"); 54MODULE_LICENSE("GPL");
55module_param(be_iopoll_budget, int, 0); 55module_param(be_iopoll_budget, int, 0);
56module_param(enable_msix, int, 0); 56module_param(enable_msix, int, 0);
@@ -552,7 +552,7 @@ MODULE_DEVICE_TABLE(pci, beiscsi_pci_id_table);
552 552
553static struct scsi_host_template beiscsi_sht = { 553static struct scsi_host_template beiscsi_sht = {
554 .module = THIS_MODULE, 554 .module = THIS_MODULE,
555 .name = "Emulex 10Gbe open-iscsi Initiator Driver", 555 .name = "Avago Technologies 10Gbe open-iscsi Initiator Driver",
556 .proc_name = DRV_NAME, 556 .proc_name = DRV_NAME,
557 .queuecommand = iscsi_queuecommand, 557 .queuecommand = iscsi_queuecommand,
558 .change_queue_depth = scsi_change_queue_depth, 558 .change_queue_depth = scsi_change_queue_depth,
diff --git a/drivers/scsi/be2iscsi/be_main.h b/drivers/scsi/be2iscsi/be_main.h
index 7ee0ffc38514..e70ea26bbc2b 100644
--- a/drivers/scsi/be2iscsi/be_main.h
+++ b/drivers/scsi/be2iscsi/be_main.h
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (C) 2005 - 2014 Emulex 2 * Copyright (C) 2005 - 2015 Avago Technologies
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -7,12 +7,12 @@
7 * as published by the Free Software Foundation. The full GNU General 7 * as published by the Free Software Foundation. The full GNU General
8 * Public License is included in this distribution in the file called COPYING. 8 * Public License is included in this distribution in the file called COPYING.
9 * 9 *
10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com) 10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
11 * 11 *
12 * Contact Information: 12 * Contact Information:
13 * linux-drivers@emulex.com 13 * linux-drivers@avagotech.com
14 * 14 *
15 * Emulex 15 * Avago Technologies
16 * 3333 Susan Street 16 * 3333 Susan Street
17 * Costa Mesa, CA 92626 17 * Costa Mesa, CA 92626
18 */ 18 */
@@ -37,7 +37,7 @@
37 37
38#define DRV_NAME "be2iscsi" 38#define DRV_NAME "be2iscsi"
39#define BUILD_STR "10.4.114.0" 39#define BUILD_STR "10.4.114.0"
40#define BE_NAME "Emulex OneConnect" \ 40#define BE_NAME "Avago Technologies OneConnect" \
41 "Open-iSCSI Driver version" BUILD_STR 41 "Open-iSCSI Driver version" BUILD_STR
42#define DRV_DESC BE_NAME " " "Driver" 42#define DRV_DESC BE_NAME " " "Driver"
43 43
diff --git a/drivers/scsi/be2iscsi/be_mgmt.c b/drivers/scsi/be2iscsi/be_mgmt.c
index 681d4e8f003a..c2c4d6975fb7 100644
--- a/drivers/scsi/be2iscsi/be_mgmt.c
+++ b/drivers/scsi/be2iscsi/be_mgmt.c
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (C) 2005 - 2014 Emulex 2 * Copyright (C) 2005 - 2015 Avago Technologies
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -7,12 +7,12 @@
7 * as published by the Free Software Foundation. The full GNU General 7 * as published by the Free Software Foundation. The full GNU General
8 * Public License is included in this distribution in the file called COPYING. 8 * Public License is included in this distribution in the file called COPYING.
9 * 9 *
10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com) 10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
11 * 11 *
12 * Contact Information: 12 * Contact Information:
13 * linux-drivers@emulex.com 13 * linux-drivers@avagotech.com
14 * 14 *
15 * Emulex 15 * Avago Technologies
16 * 3333 Susan Street 16 * 3333 Susan Street
17 * Costa Mesa, CA 92626 17 * Costa Mesa, CA 92626
18 */ 18 */
diff --git a/drivers/scsi/be2iscsi/be_mgmt.h b/drivers/scsi/be2iscsi/be_mgmt.h
index bd81446936fc..9356b9a86b66 100644
--- a/drivers/scsi/be2iscsi/be_mgmt.h
+++ b/drivers/scsi/be2iscsi/be_mgmt.h
@@ -1,5 +1,5 @@
1/** 1/**
2 * Copyright (C) 2005 - 2014 Emulex 2 * Copyright (C) 2005 - 2015 Avago Technologies
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This program is free software; you can redistribute it and/or 5 * This program is free software; you can redistribute it and/or
@@ -7,12 +7,12 @@
7 * as published by the Free Software Foundation. The full GNU General 7 * as published by the Free Software Foundation. The full GNU General
8 * Public License is included in this distribution in the file called COPYING. 8 * Public License is included in this distribution in the file called COPYING.
9 * 9 *
10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com) 10 * Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
11 * 11 *
12 * Contact Information: 12 * Contact Information:
13 * linux-drivers@emulex.com 13 * linux-drivers@avagotech.com
14 * 14 *
15 * Emulex 15 * Avago Technologies
16 * 3333 Susan Street 16 * 3333 Susan Street
17 * Costa Mesa, CA 92626 17 * Costa Mesa, CA 92626
18 */ 18 */
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index cb73cf9e9ba5..c140f99772ca 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -1130,25 +1130,6 @@ lpfc_release_scsi_buf(struct lpfc_hba *phba, struct lpfc_scsi_buf *psb)
1130} 1130}
1131 1131
1132/** 1132/**
1133 * lpfc_fcpcmd_to_iocb - copy the fcp_cmd data into the IOCB
1134 * @data: A pointer to the immediate command data portion of the IOCB.
1135 * @fcp_cmnd: The FCP Command that is provided by the SCSI layer.
1136 *
1137 * The routine copies the entire FCP command from @fcp_cmnd to @data while
1138 * byte swapping the data to big endian format for transmission on the wire.
1139 **/
1140static void
1141lpfc_fcpcmd_to_iocb(uint8_t *data, struct fcp_cmnd *fcp_cmnd)
1142{
1143 int i, j;
1144
1145 for (i = 0, j = 0; i < sizeof(struct fcp_cmnd);
1146 i += sizeof(uint32_t), j++) {
1147 ((uint32_t *)data)[j] = cpu_to_be32(((uint32_t *)fcp_cmnd)[j]);
1148 }
1149}
1150
1151/**
1152 * lpfc_scsi_prep_dma_buf_s3 - DMA mapping for scsi buffer to SLI3 IF spec 1133 * lpfc_scsi_prep_dma_buf_s3 - DMA mapping for scsi buffer to SLI3 IF spec
1153 * @phba: The Hba for which this call is being executed. 1134 * @phba: The Hba for which this call is being executed.
1154 * @lpfc_cmd: The scsi buffer which is going to be mapped. 1135 * @lpfc_cmd: The scsi buffer which is going to be mapped.
@@ -1283,7 +1264,6 @@ lpfc_scsi_prep_dma_buf_s3(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd)
1283 * we need to set word 4 of IOCB here 1264 * we need to set word 4 of IOCB here
1284 */ 1265 */
1285 iocb_cmd->un.fcpi.fcpi_parm = scsi_bufflen(scsi_cmnd); 1266 iocb_cmd->un.fcpi.fcpi_parm = scsi_bufflen(scsi_cmnd);
1286 lpfc_fcpcmd_to_iocb(iocb_cmd->unsli3.fcp_ext.icd, fcp_cmnd);
1287 return 0; 1267 return 0;
1288} 1268}
1289 1269
@@ -4147,6 +4127,24 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
4147} 4127}
4148 4128
4149/** 4129/**
4130 * lpfc_fcpcmd_to_iocb - copy the fcp_cmd data into the IOCB
4131 * @data: A pointer to the immediate command data portion of the IOCB.
4132 * @fcp_cmnd: The FCP Command that is provided by the SCSI layer.
4133 *
4134 * The routine copies the entire FCP command from @fcp_cmnd to @data while
4135 * byte swapping the data to big endian format for transmission on the wire.
4136 **/
4137static void
4138lpfc_fcpcmd_to_iocb(uint8_t *data, struct fcp_cmnd *fcp_cmnd)
4139{
4140 int i, j;
4141 for (i = 0, j = 0; i < sizeof(struct fcp_cmnd);
4142 i += sizeof(uint32_t), j++) {
4143 ((uint32_t *)data)[j] = cpu_to_be32(((uint32_t *)fcp_cmnd)[j]);
4144 }
4145}
4146
4147/**
4150 * lpfc_scsi_prep_cmnd - Wrapper func for convert scsi cmnd to FCP info unit 4148 * lpfc_scsi_prep_cmnd - Wrapper func for convert scsi cmnd to FCP info unit
4151 * @vport: The virtual port for which this call is being executed. 4149 * @vport: The virtual port for which this call is being executed.
4152 * @lpfc_cmd: The scsi command which needs to send. 4150 * @lpfc_cmd: The scsi command which needs to send.
@@ -4225,6 +4223,9 @@ lpfc_scsi_prep_cmnd(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd,
4225 fcp_cmnd->fcpCntl3 = 0; 4223 fcp_cmnd->fcpCntl3 = 0;
4226 phba->fc4ControlRequests++; 4224 phba->fc4ControlRequests++;
4227 } 4225 }
4226 if (phba->sli_rev == 3 &&
4227 !(phba->sli3_options & LPFC_SLI3_BG_ENABLED))
4228 lpfc_fcpcmd_to_iocb(iocb_cmd->unsli3.fcp_ext.icd, fcp_cmnd);
4228 /* 4229 /*
4229 * Finish initializing those IOCB fields that are independent 4230 * Finish initializing those IOCB fields that are independent
4230 * of the scsi_cmnd request_buffer 4231 * of the scsi_cmnd request_buffer
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 79beebf53302..7f9d65fe4fd9 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1600,6 +1600,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
1600{ 1600{
1601 u64 start_lba = blk_rq_pos(scmd->request); 1601 u64 start_lba = blk_rq_pos(scmd->request);
1602 u64 end_lba = blk_rq_pos(scmd->request) + (scsi_bufflen(scmd) / 512); 1602 u64 end_lba = blk_rq_pos(scmd->request) + (scsi_bufflen(scmd) / 512);
1603 u64 factor = scmd->device->sector_size / 512;
1603 u64 bad_lba; 1604 u64 bad_lba;
1604 int info_valid; 1605 int info_valid;
1605 /* 1606 /*
@@ -1621,16 +1622,9 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
1621 if (scsi_bufflen(scmd) <= scmd->device->sector_size) 1622 if (scsi_bufflen(scmd) <= scmd->device->sector_size)
1622 return 0; 1623 return 0;
1623 1624
1624 if (scmd->device->sector_size < 512) { 1625 /* be careful ... don't want any overflows */
1625 /* only legitimate sector_size here is 256 */ 1626 do_div(start_lba, factor);
1626 start_lba <<= 1; 1627 do_div(end_lba, factor);
1627 end_lba <<= 1;
1628 } else {
1629 /* be careful ... don't want any overflows */
1630 unsigned int factor = scmd->device->sector_size / 512;
1631 do_div(start_lba, factor);
1632 do_div(end_lba, factor);
1633 }
1634 1628
1635 /* The bad lba was reported incorrectly, we have no idea where 1629 /* The bad lba was reported incorrectly, we have no idea where
1636 * the error is. 1630 * the error is.
@@ -2188,8 +2182,7 @@ got_data:
2188 if (sector_size != 512 && 2182 if (sector_size != 512 &&
2189 sector_size != 1024 && 2183 sector_size != 1024 &&
2190 sector_size != 2048 && 2184 sector_size != 2048 &&
2191 sector_size != 4096 && 2185 sector_size != 4096) {
2192 sector_size != 256) {
2193 sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n", 2186 sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n",
2194 sector_size); 2187 sector_size);
2195 /* 2188 /*
@@ -2244,8 +2237,6 @@ got_data:
2244 sdkp->capacity <<= 2; 2237 sdkp->capacity <<= 2;
2245 else if (sector_size == 1024) 2238 else if (sector_size == 1024)
2246 sdkp->capacity <<= 1; 2239 sdkp->capacity <<= 1;
2247 else if (sector_size == 256)
2248 sdkp->capacity >>= 1;
2249 2240
2250 blk_queue_physical_block_size(sdp->request_queue, 2241 blk_queue_physical_block_size(sdp->request_queue,
2251 sdkp->physical_block_size); 2242 sdkp->physical_block_size);
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index d9dad90344d5..3c6584ff65c1 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -1600,8 +1600,7 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
1600 break; 1600 break;
1601 default: 1601 default:
1602 vm_srb->data_in = UNKNOWN_TYPE; 1602 vm_srb->data_in = UNKNOWN_TYPE;
1603 vm_srb->win8_extension.srb_flags |= (SRB_FLAGS_DATA_IN | 1603 vm_srb->win8_extension.srb_flags |= SRB_FLAGS_NO_DATA_TRANSFER;
1604 SRB_FLAGS_DATA_OUT);
1605 break; 1604 break;
1606 } 1605 }
1607 1606