Commit 5b139666 authored by Linus Torvalds's avatar Linus Torvalds

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
parents c5db6a3b 32505876
...@@ -3825,10 +3825,11 @@ M: David Woodhouse <dwmw2@infradead.org> ...@@ -3825,10 +3825,11 @@ M: David Woodhouse <dwmw2@infradead.org>
L: linux-embedded@vger.kernel.org L: linux-embedded@vger.kernel.org
S: Maintained S: Maintained
EMULEX LPFC FC SCSI DRIVER EMULEX/AVAGO LPFC FC/FCOE SCSI DRIVER
M: James Smart <james.smart@emulex.com> M: James Smart <james.smart@avagotech.com>
M: Dick Kennedy <dick.kennedy@avagotech.com>
L: linux-scsi@vger.kernel.org L: linux-scsi@vger.kernel.org
W: http://sourceforge.net/projects/lpfcxxxx W: http://www.avagotech.com
S: Supported S: Supported
F: drivers/scsi/lpfc/ F: drivers/scsi/lpfc/
...@@ -8829,9 +8830,11 @@ F: drivers/misc/phantom.c ...@@ -8829,9 +8830,11 @@ F: drivers/misc/phantom.c
F: include/uapi/linux/phantom.h F: include/uapi/linux/phantom.h
SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER 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 L: linux-scsi@vger.kernel.org
W: http://www.emulex.com W: http://www.avagotech.com
S: Supported S: Supported
F: drivers/scsi/be2iscsi/ F: drivers/scsi/be2iscsi/
......
/** /**
* Copyright (C) 2005 - 2014 Emulex * Copyright (C) 2005 - 2015 Avago Technologies
* All rights reserved. * All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
* Public License is included in this distribution in the file called COPYING. * Public License is included in this distribution in the file called COPYING.
* *
* Contact Information: * Contact Information:
* linux-drivers@emulex.com * linux-drivers@avagotech.com
* *
* Emulex * Avago Technologies
* 3333 Susan Street * 3333 Susan Street
* Costa Mesa, CA 92626 * Costa Mesa, CA 92626
*/ */
......
/** /**
* Copyright (C) 2005 - 2014 Emulex * Copyright (C) 2005 - 2015 Avago Technologies
* All rights reserved. * All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
* Public License is included in this distribution in the file called COPYING. * Public License is included in this distribution in the file called COPYING.
* *
* Contact Information: * Contact Information:
* linux-drivers@emulex.com * linux-drivers@avagotech.com
* *
* Emulex * Avago Technologies
* 3333 Susan Street * 3333 Susan Street
* Costa Mesa, CA 92626 * Costa Mesa, CA 92626
*/ */
......
/** /**
* Copyright (C) 2005 - 2014 Emulex * Copyright (C) 2005 - 2015 Avago Technologies
* All rights reserved. * All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
* Public License is included in this distribution in the file called COPYING. * Public License is included in this distribution in the file called COPYING.
* *
* Contact Information: * Contact Information:
* linux-drivers@emulex.com * linux-drivers@avagotech.com
* *
* Emulex * Avago Technologies
* 3333 Susan Street * 3333 Susan Street
* Costa Mesa, CA 92626 * Costa Mesa, CA 92626
*/ */
......
/** /**
* Copyright (C) 2005 - 2014 Emulex * Copyright (C) 2005 - 2015 Avago Technologies
* All rights reserved. * All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
* as published by the Free Software Foundation. The full GNU General * as published by the Free Software Foundation. The full GNU General
* Public License is included in this distribution in the file called COPYING. * 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: * Contact Information:
* linux-drivers@emulex.com * linux-drivers@avagotech.com
* *
* Emulex * Avago Technologies
* 3333 Susan Street * 3333 Susan Street
* Costa Mesa, CA 92626 * Costa Mesa, CA 92626
*/ */
......
/** /**
* Copyright (C) 2005 - 2014 Emulex * Copyright (C) 2005 - 2015 Avago Technologies
* All rights reserved. * All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
* as published by the Free Software Foundation. The full GNU General * as published by the Free Software Foundation. The full GNU General
* Public License is included in this distribution in the file called COPYING. * 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: * Contact Information:
* linux-drivers@emulex.com * linux-drivers@avagotech.com
* *
* Emulex * Avago Technologies
* 3333 Susan Street * 3333 Susan Street
* Costa Mesa, CA 92626 * Costa Mesa, CA 92626
*/ */
......
/** /**
* Copyright (C) 2005 - 2014 Emulex * Copyright (C) 2005 - 2015 Avago Technologies
* All rights reserved. * All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
* as published by the Free Software Foundation. The full GNU General * as published by the Free Software Foundation. The full GNU General
* Public License is included in this distribution in the file called COPYING. * 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: * Contact Information:
* linux-drivers@emulex.com * linux-drivers@avagotech.com
* *
* Emulex * Avago Technologies
* 3333 Susan Street * 3333 Susan Street
* Costa Mesa, CA 92626 * Costa Mesa, CA 92626
*/ */
...@@ -50,7 +50,7 @@ static unsigned int enable_msix = 1; ...@@ -50,7 +50,7 @@ static unsigned int enable_msix = 1;
MODULE_DESCRIPTION(DRV_DESC " " BUILD_STR); MODULE_DESCRIPTION(DRV_DESC " " BUILD_STR);
MODULE_VERSION(BUILD_STR); MODULE_VERSION(BUILD_STR);
MODULE_AUTHOR("Emulex Corporation"); MODULE_AUTHOR("Avago Technologies");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_param(be_iopoll_budget, int, 0); module_param(be_iopoll_budget, int, 0);
module_param(enable_msix, int, 0); module_param(enable_msix, int, 0);
...@@ -552,7 +552,7 @@ MODULE_DEVICE_TABLE(pci, beiscsi_pci_id_table); ...@@ -552,7 +552,7 @@ MODULE_DEVICE_TABLE(pci, beiscsi_pci_id_table);
static struct scsi_host_template beiscsi_sht = { static struct scsi_host_template beiscsi_sht = {
.module = THIS_MODULE, .module = THIS_MODULE,
.name = "Emulex 10Gbe open-iscsi Initiator Driver", .name = "Avago Technologies 10Gbe open-iscsi Initiator Driver",
.proc_name = DRV_NAME, .proc_name = DRV_NAME,
.queuecommand = iscsi_queuecommand, .queuecommand = iscsi_queuecommand,
.change_queue_depth = scsi_change_queue_depth, .change_queue_depth = scsi_change_queue_depth,
......
/** /**
* Copyright (C) 2005 - 2014 Emulex * Copyright (C) 2005 - 2015 Avago Technologies
* All rights reserved. * All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
* as published by the Free Software Foundation. The full GNU General * as published by the Free Software Foundation. The full GNU General
* Public License is included in this distribution in the file called COPYING. * 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: * Contact Information:
* linux-drivers@emulex.com * linux-drivers@avagotech.com
* *
* Emulex * Avago Technologies
* 3333 Susan Street * 3333 Susan Street
* Costa Mesa, CA 92626 * Costa Mesa, CA 92626
*/ */
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
#define DRV_NAME "be2iscsi" #define DRV_NAME "be2iscsi"
#define BUILD_STR "10.4.114.0" #define BUILD_STR "10.4.114.0"
#define BE_NAME "Emulex OneConnect" \ #define BE_NAME "Avago Technologies OneConnect" \
"Open-iSCSI Driver version" BUILD_STR "Open-iSCSI Driver version" BUILD_STR
#define DRV_DESC BE_NAME " " "Driver" #define DRV_DESC BE_NAME " " "Driver"
......
/** /**
* Copyright (C) 2005 - 2014 Emulex * Copyright (C) 2005 - 2015 Avago Technologies
* All rights reserved. * All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
* as published by the Free Software Foundation. The full GNU General * as published by the Free Software Foundation. The full GNU General
* Public License is included in this distribution in the file called COPYING. * 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: * Contact Information:
* linux-drivers@emulex.com * linux-drivers@avagotech.com
* *
* Emulex * Avago Technologies
* 3333 Susan Street * 3333 Susan Street
* Costa Mesa, CA 92626 * Costa Mesa, CA 92626
*/ */
......
/** /**
* Copyright (C) 2005 - 2014 Emulex * Copyright (C) 2005 - 2015 Avago Technologies
* All rights reserved. * All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
* as published by the Free Software Foundation. The full GNU General * as published by the Free Software Foundation. The full GNU General
* Public License is included in this distribution in the file called COPYING. * 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: * Contact Information:
* linux-drivers@emulex.com * linux-drivers@avagotech.com
* *
* Emulex * Avago Technologies
* 3333 Susan Street * 3333 Susan Street
* Costa Mesa, CA 92626 * Costa Mesa, CA 92626
*/ */
......
...@@ -1129,25 +1129,6 @@ lpfc_release_scsi_buf(struct lpfc_hba *phba, struct lpfc_scsi_buf *psb) ...@@ -1129,25 +1129,6 @@ lpfc_release_scsi_buf(struct lpfc_hba *phba, struct lpfc_scsi_buf *psb)
phba->lpfc_release_scsi_buf(phba, 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 * 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. * @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) ...@@ -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 * we need to set word 4 of IOCB here
*/ */
iocb_cmd->un.fcpi.fcpi_parm = scsi_bufflen(scsi_cmnd); iocb_cmd->un.fcpi.fcpi_parm = scsi_bufflen(scsi_cmnd);
lpfc_fcpcmd_to_iocb(iocb_cmd->unsli3.fcp_ext.icd, fcp_cmnd);
return 0; return 0;
} }
...@@ -4146,6 +4126,24 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn, ...@@ -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_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 * 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. * @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, ...@@ -4225,6 +4223,9 @@ lpfc_scsi_prep_cmnd(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd,
fcp_cmnd->fcpCntl3 = 0; fcp_cmnd->fcpCntl3 = 0;
phba->fc4ControlRequests++; 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 * Finish initializing those IOCB fields that are independent
* of the scsi_cmnd request_buffer * of the scsi_cmnd request_buffer
......
...@@ -1600,6 +1600,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd) ...@@ -1600,6 +1600,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
{ {
u64 start_lba = blk_rq_pos(scmd->request); u64 start_lba = blk_rq_pos(scmd->request);
u64 end_lba = blk_rq_pos(scmd->request) + (scsi_bufflen(scmd) / 512); u64 end_lba = blk_rq_pos(scmd->request) + (scsi_bufflen(scmd) / 512);
u64 factor = scmd->device->sector_size / 512;
u64 bad_lba; u64 bad_lba;
int info_valid; int info_valid;
/* /*
...@@ -1621,16 +1622,9 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd) ...@@ -1621,16 +1622,9 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
if (scsi_bufflen(scmd) <= scmd->device->sector_size) if (scsi_bufflen(scmd) <= scmd->device->sector_size)
return 0; return 0;
if (scmd->device->sector_size < 512) { /* be careful ... don't want any overflows */
/* only legitimate sector_size here is 256 */ do_div(start_lba, factor);
start_lba <<= 1; do_div(end_lba, factor);
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);
}
/* The bad lba was reported incorrectly, we have no idea where /* The bad lba was reported incorrectly, we have no idea where
* the error is. * the error is.
...@@ -2188,8 +2182,7 @@ sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer) ...@@ -2188,8 +2182,7 @@ sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer)
if (sector_size != 512 && if (sector_size != 512 &&
sector_size != 1024 && sector_size != 1024 &&
sector_size != 2048 && sector_size != 2048 &&
sector_size != 4096 && sector_size != 4096) {
sector_size != 256) {
sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n", sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n",
sector_size); sector_size);
/* /*
...@@ -2244,8 +2237,6 @@ sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer) ...@@ -2244,8 +2237,6 @@ sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer)
sdkp->capacity <<= 2; sdkp->capacity <<= 2;
else if (sector_size == 1024) else if (sector_size == 1024)
sdkp->capacity <<= 1; sdkp->capacity <<= 1;
else if (sector_size == 256)
sdkp->capacity >>= 1;
blk_queue_physical_block_size(sdp->request_queue, blk_queue_physical_block_size(sdp->request_queue,
sdkp->physical_block_size); sdkp->physical_block_size);
......
...@@ -1600,8 +1600,7 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd) ...@@ -1600,8 +1600,7 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
break; break;
default: default:
vm_srb->data_in = UNKNOWN_TYPE; vm_srb->data_in = UNKNOWN_TYPE;
vm_srb->win8_extension.srb_flags |= (SRB_FLAGS_DATA_IN | vm_srb->win8_extension.srb_flags |= SRB_FLAGS_NO_DATA_TRANSFER;
SRB_FLAGS_DATA_OUT);
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment