Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley:
"These are mostly fixes for problems with merge window code.

In addition we have one doc update (alua) and two dead code removals
(aiclib and octogon) a spurious assignment removal (csiostor) and a
performance improvement for storvsc involving better interrupt
spreading and increasing the command per lun handling"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
scsi: qla4xxx: skip error recovery in case of register disconnect.
scsi: aacraid: fix shutdown crash when init fails
scsi: qedi: Cleanup local str variable
scsi: qedi: Fix truncation of CHAP name and secret
scsi: qla2xxx: Fix incorrect handle for abort IOCB
scsi: qla2xxx: Fix double free bug after firmware timeout
scsi: storvsc: Increase cmd_per_lun for higher speed devices
scsi: qla2xxx: Fix a locking imbalance in qlt_24xx_handle_els()
scsi: scsi_dh: Document alua_rtpg_queue() arguments
scsi: Remove Makefile entry for oktagon files
scsi: aic7xxx: remove aiclib.c
scsi: qla2xxx: Avoid triggering undefined behavior in qla2x00_mbx_completion()
scsi: mptfusion: Add bounds check in mptctl_hp_targetinfo()
scsi: sym53c8xx_2: iterator underflow in sym_getsync()
scsi: bnx2fc: Fix check in SCSI completion handler for timed out request
scsi: csiostor: remove redundant assignment to pointer 'ln'
scsi: ufs: Enable quirk to ignore sending WRITE_SAME command
scsi: ibmvfc: fix misdefined reserved field in ibmvfc_fcp_rsp_info
scsi: qla2xxx: Fix memory corruption during hba reset test
scsi: mpt3sas: fix an out of bound write

+107 -98
+2
drivers/message/fusion/mptctl.c
··· 2687 2687 __FILE__, __LINE__, iocnum); 2688 2688 return -ENODEV; 2689 2689 } 2690 + if (karg.hdr.id >= MPT_MAX_FC_DEVICES) 2691 + return -EINVAL; 2690 2692 dctlprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mptctl_hp_targetinfo called.\n", 2691 2693 ioc->name)); 2692 2694
-1
drivers/scsi/Makefile
··· 185 185 CFLAGS_ncr53c8xx.o := $(ncr53c8xx-flags-y) $(ncr53c8xx-flags-m) 186 186 zalon7xx-objs := zalon.o ncr53c8xx.o 187 187 NCR_Q720_mod-objs := NCR_Q720.o ncr53c8xx.o 188 - oktagon_esp_mod-objs := oktagon_esp.o oktagon_io.o 189 188 190 189 # Files generated that shall be removed upon make clean 191 190 clean-files := 53c700_d.h 53c700_u.h
+3 -1
drivers/scsi/aacraid/linit.c
··· 1693 1693 * Map in the registers from the adapter. 1694 1694 */ 1695 1695 aac->base_size = AAC_MIN_FOOTPRINT_SIZE; 1696 - if ((*aac_drivers[index].init)(aac)) 1696 + if ((*aac_drivers[index].init)(aac)) { 1697 + error = -ENODEV; 1697 1698 goto out_unmap; 1699 + } 1698 1700 1699 1701 if (aac->sync_mode) { 1700 1702 if (aac_sync_mode)
-34
drivers/scsi/aic7xxx/aiclib.c
··· 1 - /* 2 - * Implementation of Utility functions for all SCSI device types. 3 - * 4 - * Copyright (c) 1997, 1998, 1999 Justin T. Gibbs. 5 - * Copyright (c) 1997, 1998 Kenneth D. Merry. 6 - * All rights reserved. 7 - * 8 - * Redistribution and use in source and binary forms, with or without 9 - * modification, are permitted provided that the following conditions 10 - * are met: 11 - * 1. Redistributions of source code must retain the above copyright 12 - * notice, this list of conditions, and the following disclaimer, 13 - * without modification, immediately at the beginning of the file. 14 - * 2. The name of the author may not be used to endorse or promote products 15 - * derived from this software without specific prior written permission. 16 - * 17 - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18 - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR 21 - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 - * SUCH DAMAGE. 28 - * 29 - * $FreeBSD: src/sys/cam/scsi/scsi_all.c,v 1.38 2002/09/23 04:56:35 mjacob Exp $ 30 - * $Id$ 31 - */ 32 - 33 - #include "aiclib.h" 34 -
+1
drivers/scsi/bnx2fc/bnx2fc_io.c
··· 1889 1889 /* we will not receive ABTS response for this IO */ 1890 1890 BNX2FC_IO_DBG(io_req, "Timer context finished processing " 1891 1891 "this scsi cmd\n"); 1892 + return; 1892 1893 } 1893 1894 1894 1895 /* Cancel the timeout_work, as we received IO completion */
+1 -1
drivers/scsi/csiostor/csio_lnode.c
··· 114 114 static struct csio_lnode * 115 115 csio_ln_lookup_by_portid(struct csio_hw *hw, uint8_t portid) 116 116 { 117 - struct csio_lnode *ln = hw->rln; 117 + struct csio_lnode *ln; 118 118 struct list_head *tmp; 119 119 120 120 /* Match siblings lnode with portid */
+5
drivers/scsi/device_handler/scsi_dh_alua.c
··· 876 876 877 877 /** 878 878 * alua_rtpg_queue() - cause RTPG to be submitted asynchronously 879 + * @pg: ALUA port group associated with @sdev. 880 + * @sdev: SCSI device for which to submit an RTPG. 881 + * @qdata: Information about the callback to invoke after the RTPG. 882 + * @force: Whether or not to submit an RTPG if a work item that will submit an 883 + * RTPG already has been scheduled. 879 884 * 880 885 * Returns true if and only if alua_rtpg_work() will be called asynchronously. 881 886 * That function is responsible for calling @qdata->fn().
+1 -1
drivers/scsi/ibmvscsi/ibmvfc.h
··· 367 367 }; 368 368 369 369 struct ibmvfc_fcp_rsp_info { 370 - __be16 reserved; 370 + u8 reserved[3]; 371 371 u8 rsp_code; 372 372 u8 reserved2[4]; 373 373 }__attribute__((packed, aligned (2)));
+4 -1
drivers/scsi/mpt3sas/mpt3sas_base.c
··· 2410 2410 continue; 2411 2411 } 2412 2412 2413 - for_each_cpu(cpu, mask) 2413 + for_each_cpu_and(cpu, mask, cpu_online_mask) { 2414 + if (cpu >= ioc->cpu_msix_table_sz) 2415 + break; 2414 2416 ioc->cpu_msix_table[cpu] = reply_q->msix_index; 2417 + } 2415 2418 } 2416 2419 return; 2417 2420 }
+26 -29
drivers/scsi/qedi/qedi_main.c
··· 1724 1724 { 1725 1725 struct qedi_ctx *qedi = data; 1726 1726 struct nvm_iscsi_initiator *initiator; 1727 - char *str = buf; 1728 1727 int rc = 1; 1729 1728 u32 ipv6_en, dhcp_en, ip_len; 1730 1729 struct nvm_iscsi_block *block; ··· 1757 1758 1758 1759 switch (type) { 1759 1760 case ISCSI_BOOT_ETH_IP_ADDR: 1760 - rc = snprintf(str, ip_len, fmt, ip); 1761 + rc = snprintf(buf, ip_len, fmt, ip); 1761 1762 break; 1762 1763 case ISCSI_BOOT_ETH_SUBNET_MASK: 1763 - rc = snprintf(str, ip_len, fmt, sub); 1764 + rc = snprintf(buf, ip_len, fmt, sub); 1764 1765 break; 1765 1766 case ISCSI_BOOT_ETH_GATEWAY: 1766 - rc = snprintf(str, ip_len, fmt, gw); 1767 + rc = snprintf(buf, ip_len, fmt, gw); 1767 1768 break; 1768 1769 case ISCSI_BOOT_ETH_FLAGS: 1769 - rc = snprintf(str, 3, "%hhd\n", 1770 + rc = snprintf(buf, 3, "%hhd\n", 1770 1771 SYSFS_FLAG_FW_SEL_BOOT); 1771 1772 break; 1772 1773 case ISCSI_BOOT_ETH_INDEX: 1773 - rc = snprintf(str, 3, "0\n"); 1774 + rc = snprintf(buf, 3, "0\n"); 1774 1775 break; 1775 1776 case ISCSI_BOOT_ETH_MAC: 1776 - rc = sysfs_format_mac(str, qedi->mac, ETH_ALEN); 1777 + rc = sysfs_format_mac(buf, qedi->mac, ETH_ALEN); 1777 1778 break; 1778 1779 case ISCSI_BOOT_ETH_VLAN: 1779 - rc = snprintf(str, 12, "%d\n", 1780 + rc = snprintf(buf, 12, "%d\n", 1780 1781 GET_FIELD2(initiator->generic_cont0, 1781 1782 NVM_ISCSI_CFG_INITIATOR_VLAN)); 1782 1783 break; 1783 1784 case ISCSI_BOOT_ETH_ORIGIN: 1784 1785 if (dhcp_en) 1785 - rc = snprintf(str, 3, "3\n"); 1786 + rc = snprintf(buf, 3, "3\n"); 1786 1787 break; 1787 1788 default: 1788 1789 rc = 0; ··· 1818 1819 { 1819 1820 struct qedi_ctx *qedi = data; 1820 1821 struct nvm_iscsi_initiator *initiator; 1821 - char *str = buf; 1822 1822 int rc; 1823 1823 struct nvm_iscsi_block *block; 1824 1824 ··· 1829 1831 1830 1832 switch (type) { 1831 1833 case ISCSI_BOOT_INI_INITIATOR_NAME: 1832 - rc = snprintf(str, NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN, "%s\n", 1833 - initiator->initiator_name.byte); 1834 + rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN, 1835 + initiator->initiator_name.byte); 1834 1836 break; 1835 1837 default: 1836 1838 rc = 0; ··· 1858 1860 qedi_show_boot_tgt_info(struct qedi_ctx *qedi, int type, 1859 1861 char *buf, enum qedi_nvm_tgts idx) 1860 1862 { 1861 - char *str = buf; 1862 1863 int rc = 1; 1863 1864 u32 ctrl_flags, ipv6_en, chap_en, mchap_en, ip_len; 1864 1865 struct nvm_iscsi_block *block; ··· 1896 1899 1897 1900 switch (type) { 1898 1901 case ISCSI_BOOT_TGT_NAME: 1899 - rc = snprintf(str, NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN, "%s\n", 1900 - block->target[idx].target_name.byte); 1902 + rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_ISCSI_NAME_MAX_LEN, 1903 + block->target[idx].target_name.byte); 1901 1904 break; 1902 1905 case ISCSI_BOOT_TGT_IP_ADDR: 1903 1906 if (ipv6_en) 1904 - rc = snprintf(str, ip_len, "%pI6\n", 1907 + rc = snprintf(buf, ip_len, "%pI6\n", 1905 1908 block->target[idx].ipv6_addr.byte); 1906 1909 else 1907 - rc = snprintf(str, ip_len, "%pI4\n", 1910 + rc = snprintf(buf, ip_len, "%pI4\n", 1908 1911 block->target[idx].ipv4_addr.byte); 1909 1912 break; 1910 1913 case ISCSI_BOOT_TGT_PORT: 1911 - rc = snprintf(str, 12, "%d\n", 1914 + rc = snprintf(buf, 12, "%d\n", 1912 1915 GET_FIELD2(block->target[idx].generic_cont0, 1913 1916 NVM_ISCSI_CFG_TARGET_TCP_PORT)); 1914 1917 break; 1915 1918 case ISCSI_BOOT_TGT_LUN: 1916 - rc = snprintf(str, 22, "%.*d\n", 1919 + rc = snprintf(buf, 22, "%.*d\n", 1917 1920 block->target[idx].lun.value[1], 1918 1921 block->target[idx].lun.value[0]); 1919 1922 break; 1920 1923 case ISCSI_BOOT_TGT_CHAP_NAME: 1921 - rc = snprintf(str, NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN, "%s\n", 1922 - chap_name); 1924 + rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN, 1925 + chap_name); 1923 1926 break; 1924 1927 case ISCSI_BOOT_TGT_CHAP_SECRET: 1925 - rc = snprintf(str, NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN, "%s\n", 1926 - chap_secret); 1928 + rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN, 1929 + chap_secret); 1927 1930 break; 1928 1931 case ISCSI_BOOT_TGT_REV_CHAP_NAME: 1929 - rc = snprintf(str, NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN, "%s\n", 1930 - mchap_name); 1932 + rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN, 1933 + mchap_name); 1931 1934 break; 1932 1935 case ISCSI_BOOT_TGT_REV_CHAP_SECRET: 1933 - rc = snprintf(str, NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN, "%s\n", 1934 - mchap_secret); 1936 + rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN, 1937 + mchap_secret); 1935 1938 break; 1936 1939 case ISCSI_BOOT_TGT_FLAGS: 1937 - rc = snprintf(str, 3, "%hhd\n", SYSFS_FLAG_FW_SEL_BOOT); 1940 + rc = snprintf(buf, 3, "%hhd\n", SYSFS_FLAG_FW_SEL_BOOT); 1938 1941 break; 1939 1942 case ISCSI_BOOT_TGT_NIC_ASSOC: 1940 - rc = snprintf(str, 3, "0\n"); 1943 + rc = snprintf(buf, 3, "0\n"); 1941 1944 break; 1942 1945 default: 1943 1946 rc = 0;
+3 -20
drivers/scsi/qla2xxx/qla_init.c
··· 59 59 req->outstanding_cmds[sp->handle] = NULL; 60 60 iocb = &sp->u.iocb_cmd; 61 61 iocb->timeout(sp); 62 - if (sp->type != SRB_ELS_DCMD) 63 - sp->free(sp); 64 62 spin_unlock_irqrestore(&vha->hw->hardware_lock, flags); 65 63 } 66 64 ··· 100 102 srb_t *sp = data; 101 103 fc_port_t *fcport = sp->fcport; 102 104 struct srb_iocb *lio = &sp->u.iocb_cmd; 103 - struct event_arg ea; 104 105 105 106 if (fcport) { 106 107 ql_dbg(ql_dbg_disc, fcport->vha, 0x2071, ··· 114 117 115 118 switch (sp->type) { 116 119 case SRB_LOGIN_CMD: 117 - if (!fcport) 118 - break; 119 120 /* Retry as needed. */ 120 121 lio->u.logio.data[0] = MBS_COMMAND_ERROR; 121 122 lio->u.logio.data[1] = lio->u.logio.flags & SRB_LOGIN_RETRIED ? 122 123 QLA_LOGIO_LOGIN_RETRIED : 0; 123 - memset(&ea, 0, sizeof(ea)); 124 - ea.event = FCME_PLOGI_DONE; 125 - ea.fcport = sp->fcport; 126 - ea.data[0] = lio->u.logio.data[0]; 127 - ea.data[1] = lio->u.logio.data[1]; 128 - ea.sp = sp; 129 - qla24xx_handle_plogi_done_event(fcport->vha, &ea); 124 + sp->done(sp, QLA_FUNCTION_TIMEOUT); 130 125 break; 131 126 case SRB_LOGOUT_CMD: 132 - if (!fcport) 133 - break; 134 - qlt_logo_completion_handler(fcport, QLA_FUNCTION_TIMEOUT); 135 - break; 136 127 case SRB_CT_PTHRU_CMD: 137 128 case SRB_MB_IOCB: 138 129 case SRB_NACK_PLOGI: ··· 220 235 qla2x00_async_logout_sp_done(void *ptr, int res) 221 236 { 222 237 srb_t *sp = ptr; 223 - struct srb_iocb *lio = &sp->u.iocb_cmd; 224 238 225 239 sp->fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); 226 - if (!test_bit(UNLOADING, &sp->vha->dpc_flags)) 227 - qla2x00_post_async_logout_done_work(sp->vha, sp->fcport, 228 - lio->u.logio.data); 240 + sp->fcport->login_gen++; 241 + qlt_logo_completion_handler(sp->fcport, res); 229 242 sp->free(sp); 230 243 } 231 244
+3 -4
drivers/scsi/qla2xxx/qla_iocb.c
··· 3275 3275 memset(abt_iocb, 0, sizeof(struct abort_entry_24xx)); 3276 3276 abt_iocb->entry_type = ABORT_IOCB_TYPE; 3277 3277 abt_iocb->entry_count = 1; 3278 - abt_iocb->handle = 3279 - cpu_to_le32(MAKE_HANDLE(aio->u.abt.req_que_no, 3280 - aio->u.abt.cmd_hndl)); 3278 + abt_iocb->handle = cpu_to_le32(MAKE_HANDLE(req->id, sp->handle)); 3281 3279 abt_iocb->nport_handle = cpu_to_le16(sp->fcport->loop_id); 3282 3280 abt_iocb->handle_to_abort = 3283 - cpu_to_le32(MAKE_HANDLE(req->id, aio->u.abt.cmd_hndl)); 3281 + cpu_to_le32(MAKE_HANDLE(aio->u.abt.req_que_no, 3282 + aio->u.abt.cmd_hndl)); 3284 3283 abt_iocb->port_id[0] = sp->fcport->d_id.b.al_pa; 3285 3284 abt_iocb->port_id[1] = sp->fcport->d_id.b.area; 3286 3285 abt_iocb->port_id[2] = sp->fcport->d_id.b.domain;
+4 -2
drivers/scsi/qla2xxx/qla_isr.c
··· 272 272 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; 273 273 274 274 /* Read all mbox registers? */ 275 - mboxes = (1 << ha->mbx_count) - 1; 275 + WARN_ON_ONCE(ha->mbx_count > 32); 276 + mboxes = (1ULL << ha->mbx_count) - 1; 276 277 if (!ha->mcp) 277 278 ql_dbg(ql_dbg_async, vha, 0x5001, "MBX pointer ERROR.\n"); 278 279 else ··· 2881 2880 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; 2882 2881 2883 2882 /* Read all mbox registers? */ 2884 - mboxes = (1 << ha->mbx_count) - 1; 2883 + WARN_ON_ONCE(ha->mbx_count > 32); 2884 + mboxes = (1ULL << ha->mbx_count) - 1; 2885 2885 if (!ha->mcp) 2886 2886 ql_dbg(ql_dbg_async, vha, 0x504e, "MBX pointer ERROR.\n"); 2887 2887 else
+2
drivers/scsi/qla2xxx/qla_os.c
··· 3625 3625 } 3626 3626 qla2x00_wait_for_hba_ready(base_vha); 3627 3627 3628 + qla2x00_wait_for_sess_deletion(base_vha); 3629 + 3628 3630 /* 3629 3631 * if UNLOAD flag is already set, then continue unload, 3630 3632 * where it was set first.
-2
drivers/scsi/qla2xxx/qla_target.c
··· 4871 4871 sess); 4872 4872 qlt_send_term_imm_notif(vha, iocb, 1); 4873 4873 res = 0; 4874 - spin_lock_irqsave(&tgt->ha->tgt.sess_lock, 4875 - flags); 4876 4874 break; 4877 4875 } 4878 4876
+2
drivers/scsi/qla4xxx/ql4_def.h
··· 168 168 #define DEV_DB_NON_PERSISTENT 0 169 169 #define DEV_DB_PERSISTENT 1 170 170 171 + #define QL4_ISP_REG_DISCONNECT 0xffffffffU 172 + 171 173 #define COPY_ISID(dst_isid, src_isid) { \ 172 174 int i, j; \ 173 175 for (i = 0, j = ISID_SIZE - 1; i < ISID_SIZE;) \
+46
drivers/scsi/qla4xxx/ql4_os.c
··· 262 262 263 263 static struct scsi_transport_template *qla4xxx_scsi_transport; 264 264 265 + static int qla4xxx_isp_check_reg(struct scsi_qla_host *ha) 266 + { 267 + u32 reg_val = 0; 268 + int rval = QLA_SUCCESS; 269 + 270 + if (is_qla8022(ha)) 271 + reg_val = readl(&ha->qla4_82xx_reg->host_status); 272 + else if (is_qla8032(ha) || is_qla8042(ha)) 273 + reg_val = qla4_8xxx_rd_direct(ha, QLA8XXX_PEG_ALIVE_COUNTER); 274 + else 275 + reg_val = readw(&ha->reg->ctrl_status); 276 + 277 + if (reg_val == QL4_ISP_REG_DISCONNECT) 278 + rval = QLA_ERROR; 279 + 280 + return rval; 281 + } 282 + 265 283 static int qla4xxx_send_ping(struct Scsi_Host *shost, uint32_t iface_num, 266 284 uint32_t iface_type, uint32_t payload_size, 267 285 uint32_t pid, struct sockaddr *dst_addr) ··· 9204 9186 struct srb *srb = NULL; 9205 9187 int ret = SUCCESS; 9206 9188 int wait = 0; 9189 + int rval; 9207 9190 9208 9191 ql4_printk(KERN_INFO, ha, "scsi%ld:%d:%llu: Abort command issued cmd=%p, cdb=0x%x\n", 9209 9192 ha->host_no, id, lun, cmd, cmd->cmnd[0]); 9193 + 9194 + rval = qla4xxx_isp_check_reg(ha); 9195 + if (rval != QLA_SUCCESS) { 9196 + ql4_printk(KERN_INFO, ha, "PCI/Register disconnect, exiting.\n"); 9197 + return FAILED; 9198 + } 9210 9199 9211 9200 spin_lock_irqsave(&ha->hardware_lock, flags); 9212 9201 srb = (struct srb *) CMD_SP(cmd); ··· 9266 9241 struct scsi_qla_host *ha = to_qla_host(cmd->device->host); 9267 9242 struct ddb_entry *ddb_entry = cmd->device->hostdata; 9268 9243 int ret = FAILED, stat; 9244 + int rval; 9269 9245 9270 9246 if (!ddb_entry) 9271 9247 return ret; ··· 9285 9259 "dpc_flags=%lx, status=%x allowed=%d\n", ha->host_no, 9286 9260 cmd, jiffies, cmd->request->timeout / HZ, 9287 9261 ha->dpc_flags, cmd->result, cmd->allowed)); 9262 + 9263 + rval = qla4xxx_isp_check_reg(ha); 9264 + if (rval != QLA_SUCCESS) { 9265 + ql4_printk(KERN_INFO, ha, "PCI/Register disconnect, exiting.\n"); 9266 + return FAILED; 9267 + } 9288 9268 9289 9269 /* FIXME: wait for hba to go online */ 9290 9270 stat = qla4xxx_reset_lun(ha, ddb_entry, cmd->device->lun); ··· 9335 9303 struct scsi_qla_host *ha = to_qla_host(cmd->device->host); 9336 9304 struct ddb_entry *ddb_entry = cmd->device->hostdata; 9337 9305 int stat, ret; 9306 + int rval; 9338 9307 9339 9308 if (!ddb_entry) 9340 9309 return FAILED; ··· 9352 9319 "to=%x,dpc_flags=%lx, status=%x allowed=%d\n", 9353 9320 ha->host_no, cmd, jiffies, cmd->request->timeout / HZ, 9354 9321 ha->dpc_flags, cmd->result, cmd->allowed)); 9322 + 9323 + rval = qla4xxx_isp_check_reg(ha); 9324 + if (rval != QLA_SUCCESS) { 9325 + ql4_printk(KERN_INFO, ha, "PCI/Register disconnect, exiting.\n"); 9326 + return FAILED; 9327 + } 9355 9328 9356 9329 stat = qla4xxx_reset_target(ha, ddb_entry); 9357 9330 if (stat != QLA_SUCCESS) { ··· 9413 9374 { 9414 9375 int return_status = FAILED; 9415 9376 struct scsi_qla_host *ha; 9377 + int rval; 9416 9378 9417 9379 ha = to_qla_host(cmd->device->host); 9380 + 9381 + rval = qla4xxx_isp_check_reg(ha); 9382 + if (rval != QLA_SUCCESS) { 9383 + ql4_printk(KERN_INFO, ha, "PCI/Register disconnect, exiting.\n"); 9384 + return FAILED; 9385 + } 9418 9386 9419 9387 if ((is_qla8032(ha) || is_qla8042(ha)) && ql4xdontresethba) 9420 9388 qla4_83xx_set_idc_dontreset(ha);
+1 -1
drivers/scsi/storvsc_drv.c
··· 1657 1657 .eh_timed_out = storvsc_eh_timed_out, 1658 1658 .slave_alloc = storvsc_device_alloc, 1659 1659 .slave_configure = storvsc_device_configure, 1660 - .cmd_per_lun = 255, 1660 + .cmd_per_lun = 2048, 1661 1661 .this_id = -1, 1662 1662 .use_clustering = ENABLE_CLUSTERING, 1663 1663 /* Make sure we dont get a sg segment crosses a page boundary */
+1 -1
drivers/scsi/sym53c8xx_2/sym_hipd.c
··· 536 536 * Look for the greatest clock divisor that allows an 537 537 * input speed faster than the period. 538 538 */ 539 - while (div-- > 0) 539 + while (--div > 0) 540 540 if (kpc >= (div_10M[div] << 2)) break; 541 541 542 542 /*
+2
drivers/scsi/ufs/ufshcd.c
··· 4352 4352 /* REPORT SUPPORTED OPERATION CODES is not supported */ 4353 4353 sdev->no_report_opcodes = 1; 4354 4354 4355 + /* WRITE_SAME command is not supported */ 4356 + sdev->no_write_same = 1; 4355 4357 4356 4358 ufshcd_set_queue_depth(sdev); 4357 4359