mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-26 02:25:00 -05:00
SCSI fixes on 20150523
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. Signed-off-by: James Bottomley <JBottomley@Odin.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAABAgAGBQJVYPemAAoJEDeqqVYsXL0MK8UIAJJ8ViLPTfhweb8QgHsUjc4S 5x2jPUD69XT93G81NWKvFhYBnlAvktBZuy6uON7SkLWkbwgiu3pB1Iowqie+Z/h8 1C5VwC8oaT6GZPuakRRxnYmoAaCX7kbdMsibSvc5ouTgvM5FdailhJpkDKcFQlkn t1GqmRQyH1P54O73af2d+z3AfNfivjoFFXz1YHcUOouiKBVyXzqk1c3CIwTQMelg B547Rz2cqgdDtgQzZzPkfust/GOYs0ZQMU3rhjeNyIvw/5xa0/Ta2m/v16lckV2I AvjK2Ht5XSr/Hc9m4yvr5vYCT5+mVrebYMghnUqpHjx1OGTBSU9lPT0exbCCJ/o= =lXOs -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
5b13966693
13 changed files with 71 additions and 77 deletions
13
MAINTAINERS
13
MAINTAINERS
|
@ -3825,10 +3825,11 @@ M: David Woodhouse <dwmw2@infradead.org>
|
|||
L: linux-embedded@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
EMULEX LPFC FC SCSI DRIVER
|
||||
M: James Smart <james.smart@emulex.com>
|
||||
EMULEX/AVAGO LPFC FC/FCOE SCSI DRIVER
|
||||
M: James Smart <james.smart@avagotech.com>
|
||||
M: Dick Kennedy <dick.kennedy@avagotech.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
W: http://sourceforge.net/projects/lpfcxxxx
|
||||
W: http://www.avagotech.com
|
||||
S: Supported
|
||||
F: drivers/scsi/lpfc/
|
||||
|
||||
|
@ -8829,9 +8830,11 @@ F: drivers/misc/phantom.c
|
|||
F: include/uapi/linux/phantom.h
|
||||
|
||||
SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
|
||||
M: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
|
||||
M: Jayamohan Kallickal <jayamohan.kallickal@avagotech.com>
|
||||
M: Minh Tran <minh.tran@avagotech.com>
|
||||
M: John Soni Jose <sony.john-n@avagotech.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
W: http://www.emulex.com
|
||||
W: http://www.avagotech.com
|
||||
S: Supported
|
||||
F: drivers/scsi/be2iscsi/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (C) 2005 - 2014 Emulex
|
||||
* Copyright (C) 2005 - 2015 Avago Technologies
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -8,9 +8,9 @@
|
|||
* Public License is included in this distribution in the file called COPYING.
|
||||
*
|
||||
* Contact Information:
|
||||
* linux-drivers@emulex.com
|
||||
* linux-drivers@avagotech.com
|
||||
*
|
||||
* Emulex
|
||||
* Avago Technologies
|
||||
* 3333 Susan Street
|
||||
* Costa Mesa, CA 92626
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (C) 2005 - 2014 Emulex
|
||||
* Copyright (C) 2005 - 2015 Avago Technologies
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -8,9 +8,9 @@
|
|||
* Public License is included in this distribution in the file called COPYING.
|
||||
*
|
||||
* Contact Information:
|
||||
* linux-drivers@emulex.com
|
||||
* linux-drivers@avagotech.com
|
||||
*
|
||||
* Emulex
|
||||
* Avago Technologies
|
||||
* 3333 Susan Street
|
||||
* Costa Mesa, CA 92626
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (C) 2005 - 2014 Emulex
|
||||
* Copyright (C) 2005 - 2015 Avago Technologies
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -8,9 +8,9 @@
|
|||
* Public License is included in this distribution in the file called COPYING.
|
||||
*
|
||||
* Contact Information:
|
||||
* linux-drivers@emulex.com
|
||||
* linux-drivers@avagotech.com
|
||||
*
|
||||
* Emulex
|
||||
* Avago Technologies
|
||||
* 3333 Susan Street
|
||||
* Costa Mesa, CA 92626
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (C) 2005 - 2014 Emulex
|
||||
* Copyright (C) 2005 - 2015 Avago Technologies
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -7,12 +7,12 @@
|
|||
* as published by the Free Software Foundation. The full GNU General
|
||||
* Public License is included in this distribution in the file called COPYING.
|
||||
*
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com)
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
|
||||
*
|
||||
* Contact Information:
|
||||
* linux-drivers@emulex.com
|
||||
* linux-drivers@avagotech.com
|
||||
*
|
||||
* Emulex
|
||||
* Avago Technologies
|
||||
* 3333 Susan Street
|
||||
* Costa Mesa, CA 92626
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (C) 2005 - 2014 Emulex
|
||||
* Copyright (C) 2005 - 2015 Avago Technologies
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -7,12 +7,12 @@
|
|||
* as published by the Free Software Foundation. The full GNU General
|
||||
* Public License is included in this distribution in the file called COPYING.
|
||||
*
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com)
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
|
||||
*
|
||||
* Contact Information:
|
||||
* linux-drivers@emulex.com
|
||||
* linux-drivers@avagotech.com
|
||||
*
|
||||
* Emulex
|
||||
* Avago Technologies
|
||||
* 3333 Susan Street
|
||||
* Costa Mesa, CA 92626
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (C) 2005 - 2014 Emulex
|
||||
* Copyright (C) 2005 - 2015 Avago Technologies
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -7,12 +7,12 @@
|
|||
* as published by the Free Software Foundation. The full GNU General
|
||||
* Public License is included in this distribution in the file called COPYING.
|
||||
*
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com)
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
|
||||
*
|
||||
* Contact Information:
|
||||
* linux-drivers@emulex.com
|
||||
* linux-drivers@avagotech.com
|
||||
*
|
||||
* Emulex
|
||||
* Avago Technologies
|
||||
* 3333 Susan Street
|
||||
* Costa Mesa, CA 92626
|
||||
*/
|
||||
|
@ -50,7 +50,7 @@ static unsigned int enable_msix = 1;
|
|||
|
||||
MODULE_DESCRIPTION(DRV_DESC " " BUILD_STR);
|
||||
MODULE_VERSION(BUILD_STR);
|
||||
MODULE_AUTHOR("Emulex Corporation");
|
||||
MODULE_AUTHOR("Avago Technologies");
|
||||
MODULE_LICENSE("GPL");
|
||||
module_param(be_iopoll_budget, int, 0);
|
||||
module_param(enable_msix, int, 0);
|
||||
|
@ -552,7 +552,7 @@ MODULE_DEVICE_TABLE(pci, beiscsi_pci_id_table);
|
|||
|
||||
static struct scsi_host_template beiscsi_sht = {
|
||||
.module = THIS_MODULE,
|
||||
.name = "Emulex 10Gbe open-iscsi Initiator Driver",
|
||||
.name = "Avago Technologies 10Gbe open-iscsi Initiator Driver",
|
||||
.proc_name = DRV_NAME,
|
||||
.queuecommand = iscsi_queuecommand,
|
||||
.change_queue_depth = scsi_change_queue_depth,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (C) 2005 - 2014 Emulex
|
||||
* Copyright (C) 2005 - 2015 Avago Technologies
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -7,12 +7,12 @@
|
|||
* as published by the Free Software Foundation. The full GNU General
|
||||
* Public License is included in this distribution in the file called COPYING.
|
||||
*
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com)
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
|
||||
*
|
||||
* Contact Information:
|
||||
* linux-drivers@emulex.com
|
||||
* linux-drivers@avagotech.com
|
||||
*
|
||||
* Emulex
|
||||
* Avago Technologies
|
||||
* 3333 Susan Street
|
||||
* Costa Mesa, CA 92626
|
||||
*/
|
||||
|
@ -37,7 +37,7 @@
|
|||
|
||||
#define DRV_NAME "be2iscsi"
|
||||
#define BUILD_STR "10.4.114.0"
|
||||
#define BE_NAME "Emulex OneConnect" \
|
||||
#define BE_NAME "Avago Technologies OneConnect" \
|
||||
"Open-iSCSI Driver version" BUILD_STR
|
||||
#define DRV_DESC BE_NAME " " "Driver"
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (C) 2005 - 2014 Emulex
|
||||
* Copyright (C) 2005 - 2015 Avago Technologies
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -7,12 +7,12 @@
|
|||
* as published by the Free Software Foundation. The full GNU General
|
||||
* Public License is included in this distribution in the file called COPYING.
|
||||
*
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com)
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
|
||||
*
|
||||
* Contact Information:
|
||||
* linux-drivers@emulex.com
|
||||
* linux-drivers@avagotech.com
|
||||
*
|
||||
* Emulex
|
||||
* Avago Technologies
|
||||
* 3333 Susan Street
|
||||
* Costa Mesa, CA 92626
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright (C) 2005 - 2014 Emulex
|
||||
* Copyright (C) 2005 - 2015 Avago Technologies
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -7,12 +7,12 @@
|
|||
* as published by the Free Software Foundation. The full GNU General
|
||||
* Public License is included in this distribution in the file called COPYING.
|
||||
*
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@emulex.com)
|
||||
* Written by: Jayamohan Kallickal (jayamohan.kallickal@avagotech.com)
|
||||
*
|
||||
* Contact Information:
|
||||
* linux-drivers@emulex.com
|
||||
* linux-drivers@avagotech.com
|
||||
*
|
||||
* Emulex
|
||||
* Avago Technologies
|
||||
* 3333 Susan Street
|
||||
* Costa Mesa, CA 92626
|
||||
*/
|
||||
|
|
|
@ -1129,25 +1129,6 @@ lpfc_release_scsi_buf(struct lpfc_hba *phba, struct lpfc_scsi_buf *psb)
|
|||
phba->lpfc_release_scsi_buf(phba, psb);
|
||||
}
|
||||
|
||||
/**
|
||||
* lpfc_fcpcmd_to_iocb - copy the fcp_cmd data into the IOCB
|
||||
* @data: A pointer to the immediate command data portion of the IOCB.
|
||||
* @fcp_cmnd: The FCP Command that is provided by the SCSI layer.
|
||||
*
|
||||
* The routine copies the entire FCP command from @fcp_cmnd to @data while
|
||||
* byte swapping the data to big endian format for transmission on the wire.
|
||||
**/
|
||||
static void
|
||||
lpfc_fcpcmd_to_iocb(uint8_t *data, struct fcp_cmnd *fcp_cmnd)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i = 0, j = 0; i < sizeof(struct fcp_cmnd);
|
||||
i += sizeof(uint32_t), j++) {
|
||||
((uint32_t *)data)[j] = cpu_to_be32(((uint32_t *)fcp_cmnd)[j]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* lpfc_scsi_prep_dma_buf_s3 - DMA mapping for scsi buffer to SLI3 IF spec
|
||||
* @phba: The Hba for which this call is being executed.
|
||||
|
@ -1283,7 +1264,6 @@ lpfc_scsi_prep_dma_buf_s3(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd)
|
|||
* we need to set word 4 of IOCB here
|
||||
*/
|
||||
iocb_cmd->un.fcpi.fcpi_parm = scsi_bufflen(scsi_cmnd);
|
||||
lpfc_fcpcmd_to_iocb(iocb_cmd->unsli3.fcp_ext.icd, fcp_cmnd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -4146,6 +4126,24 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
|
|||
lpfc_release_scsi_buf(phba, lpfc_cmd);
|
||||
}
|
||||
|
||||
/**
|
||||
* lpfc_fcpcmd_to_iocb - copy the fcp_cmd data into the IOCB
|
||||
* @data: A pointer to the immediate command data portion of the IOCB.
|
||||
* @fcp_cmnd: The FCP Command that is provided by the SCSI layer.
|
||||
*
|
||||
* The routine copies the entire FCP command from @fcp_cmnd to @data while
|
||||
* byte swapping the data to big endian format for transmission on the wire.
|
||||
**/
|
||||
static void
|
||||
lpfc_fcpcmd_to_iocb(uint8_t *data, struct fcp_cmnd *fcp_cmnd)
|
||||
{
|
||||
int i, j;
|
||||
for (i = 0, j = 0; i < sizeof(struct fcp_cmnd);
|
||||
i += sizeof(uint32_t), j++) {
|
||||
((uint32_t *)data)[j] = cpu_to_be32(((uint32_t *)fcp_cmnd)[j]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* lpfc_scsi_prep_cmnd - Wrapper func for convert scsi cmnd to FCP info unit
|
||||
* @vport: The virtual port for which this call is being executed.
|
||||
|
@ -4225,6 +4223,9 @@ lpfc_scsi_prep_cmnd(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd,
|
|||
fcp_cmnd->fcpCntl3 = 0;
|
||||
phba->fc4ControlRequests++;
|
||||
}
|
||||
if (phba->sli_rev == 3 &&
|
||||
!(phba->sli3_options & LPFC_SLI3_BG_ENABLED))
|
||||
lpfc_fcpcmd_to_iocb(iocb_cmd->unsli3.fcp_ext.icd, fcp_cmnd);
|
||||
/*
|
||||
* Finish initializing those IOCB fields that are independent
|
||||
* of the scsi_cmnd request_buffer
|
||||
|
|
|
@ -1600,6 +1600,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
|
|||
{
|
||||
u64 start_lba = blk_rq_pos(scmd->request);
|
||||
u64 end_lba = blk_rq_pos(scmd->request) + (scsi_bufflen(scmd) / 512);
|
||||
u64 factor = scmd->device->sector_size / 512;
|
||||
u64 bad_lba;
|
||||
int info_valid;
|
||||
/*
|
||||
|
@ -1621,16 +1622,9 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
|
|||
if (scsi_bufflen(scmd) <= scmd->device->sector_size)
|
||||
return 0;
|
||||
|
||||
if (scmd->device->sector_size < 512) {
|
||||
/* only legitimate sector_size here is 256 */
|
||||
start_lba <<= 1;
|
||||
end_lba <<= 1;
|
||||
} else {
|
||||
/* be careful ... don't want any overflows */
|
||||
unsigned int factor = scmd->device->sector_size / 512;
|
||||
do_div(start_lba, factor);
|
||||
do_div(end_lba, factor);
|
||||
}
|
||||
/* be careful ... don't want any overflows */
|
||||
do_div(start_lba, factor);
|
||||
do_div(end_lba, factor);
|
||||
|
||||
/* The bad lba was reported incorrectly, we have no idea where
|
||||
* the error is.
|
||||
|
@ -2188,8 +2182,7 @@ got_data:
|
|||
if (sector_size != 512 &&
|
||||
sector_size != 1024 &&
|
||||
sector_size != 2048 &&
|
||||
sector_size != 4096 &&
|
||||
sector_size != 256) {
|
||||
sector_size != 4096) {
|
||||
sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n",
|
||||
sector_size);
|
||||
/*
|
||||
|
@ -2244,8 +2237,6 @@ got_data:
|
|||
sdkp->capacity <<= 2;
|
||||
else if (sector_size == 1024)
|
||||
sdkp->capacity <<= 1;
|
||||
else if (sector_size == 256)
|
||||
sdkp->capacity >>= 1;
|
||||
|
||||
blk_queue_physical_block_size(sdp->request_queue,
|
||||
sdkp->physical_block_size);
|
||||
|
|
|
@ -1600,8 +1600,7 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
|
|||
break;
|
||||
default:
|
||||
vm_srb->data_in = UNKNOWN_TYPE;
|
||||
vm_srb->win8_extension.srb_flags |= (SRB_FLAGS_DATA_IN |
|
||||
SRB_FLAGS_DATA_OUT);
|
||||
vm_srb->win8_extension.srb_flags |= SRB_FLAGS_NO_DATA_TRANSFER;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue