Print this page
NEX-19691 Unsuccessful mpt_sas IOC reset leads to the panic in no I/O to the pool - days later
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
NEX-20282 Add disk target queue depth tunable to mpt_sas
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
9048 mpt_sas should not require targets to send SEP messages
Reviewed by: Dan McDonald <danmcd@joyent.com>
Reviewed by: Hans Rosenfeld <hans.rosenfeld@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Approved by: Gordon Ross <gwr@nexenta.com>
NEX-14838 Support 24 port version of SAS adapters
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
NEX-2100 vmem_hash_delete(ffffff5b5dee0000, 0, 1): bad free
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Marcel Telka <marcel@telka.sk>
NEX-3717 mptsas doesn't handle timeouts in mptsas_get_sata_guid()
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Dan Fields <dan.fields@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
NEX-2103 12G mpt_sas needs additional minor enhancements
Revert OS-73 do not do IO complettions in the ISR
NEX-1889 mpt_sas should support 12G HBAs
4500 mptsas_hash_traverse() is unsafe, leads to missing devices
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
Approved by: Albert Lee <trisk@nexenta.com>
backout 4500 mptsas_hash_traverse() is unsafe, leads to missing devices
4500 mptsas_hash_traverse() is unsafe, leads to missing devices
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
Approved by: Albert Lee <trisk@nexenta.com>
OS-73 do not do IO complettions in the ISR
OS-61 Need ability for fault injection in mptsas
OS-60 mptsas watchdog resolution considered way to long for accurate CMD timeouts.
OS-59 remove automated target removal mechanism from mpt_sas.
re #9517 rb4120 After single disk fault patch installed single disk fault still causes process hangs
re #8346 rb2639 KT disk failures
re #9636 rb2836 - mpt_sas should attempt an MUR reset at attach time.
--HG--
branch : stable-4.0
re #9636 rb2836 - mpt_sas should attempt an MUR reset at attach time.
re #6530 mpt_sas crash when more than 1 Initiator involved - ie HA

*** 19,29 **** * CDDL HEADER END */ /* * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. ! * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2017, Joyent, Inc. * Copyright (c) 2014, Tegile Systems Inc. All rights reserved. */ /* --- 19,29 ---- * CDDL HEADER END */ /* * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. ! * Copyright 2017 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2017, Joyent, Inc. * Copyright (c) 2014, Tegile Systems Inc. All rights reserved. */ /*
*** 75,84 **** --- 75,89 ---- */ #ifdef DEBUG #define MPTSAS_DEBUG /* turn on debugging code */ #endif /* DEBUG */ + + #if defined(DEBUG) || lint + #define MPTSAS_FAULTINJECTION + #endif + #define MPTSAS_INITIAL_SOFT_SPACE 4 /* * Note below macro definition and data type definition * are used for phy mask handling, it should be changed
*** 200,217 **** * format unit address. */ #define MPTSAS_RAID_WWID(wwid) \ ((wwid & 0x0FFFFFFFFFFFFFFF) | 0x3000000000000000) typedef struct mptsas_target_addr { uint64_t mta_wwn; mptsas_phymask_t mta_phymask; } mptsas_target_addr_t; - TAILQ_HEAD(mptsas_active_cmdq, mptsas_cmd); - typedef struct mptsas_active_cmdq mptsas_active_cmdq_t; - typedef struct mptsas_target { mptsas_target_addr_t m_addr; refhash_link_t m_link; uint8_t m_dr_flag; uint16_t m_devhdl; --- 205,222 ---- * format unit address. */ #define MPTSAS_RAID_WWID(wwid) \ ((wwid & 0x0FFFFFFFFFFFFFFF) | 0x3000000000000000) + TAILQ_HEAD(mptsas_active_cmdq, mptsas_cmd); + typedef struct mptsas_active_cmdq mptsas_active_cmdq_t; + typedef struct mptsas_target_addr { uint64_t mta_wwn; mptsas_phymask_t mta_phymask; } mptsas_target_addr_t; typedef struct mptsas_target { mptsas_target_addr_t m_addr; refhash_link_t m_link; uint8_t m_dr_flag; uint16_t m_devhdl;
*** 228,240 **** uint8_t m_qfull_retries; uint16_t m_io_flags; uint16_t m_enclosure; uint16_t m_slot_num; uint32_t m_tgt_unconfigured; - uint8_t m_led_status; - uint8_t m_scsi_req_desc_type; - } mptsas_target_t; /* * If you change this structure, be sure that mptsas_smp_target_copy() * does the right thing. --- 233,242 ----
*** 254,263 **** --- 256,268 ---- */ typedef struct mptsas_enclosure { list_node_t me_link; uint16_t me_enchdl; uint16_t me_flags; + uint16_t me_nslots; + uint16_t me_fslot; + uint8_t *me_slotleds; } mptsas_enclosure_t; typedef struct mptsas_cache_frames { ddi_dma_handle_t m_dma_hdl; ddi_acc_handle_t m_acc_hdl;
*** 780,789 **** --- 785,799 ---- /* * scsi reset delay per bus */ uint_t m_scsi_reset_delay; + /* + * Tuneable for the throttle control + */ + uint_t m_max_tune_throttle; + int m_pm_idle_delay; uchar_t m_polled_intr; /* intr was polled. */ uchar_t m_suspended; /* true if driver is suspended */
*** 815,826 **** */ caddr_t m_req_frame; uint64_t m_req_frame_dma_addr; caddr_t m_req_sense; caddr_t m_extreq_sense; - uint_t m_extreq_sense_refcount; - kcondvar_t m_extreq_sense_refcount_cv; uint64_t m_req_sense_dma_addr; caddr_t m_reply_frame; uint64_t m_reply_frame_dma_addr; caddr_t m_free_queue; uint64_t m_free_queue_dma_addr; --- 825,834 ----
*** 949,958 **** --- 957,970 ---- /* * per instance cmd data structures for task management cmds */ m_event_struct_t m_event_task_mgmt; /* must be last */ /* ... scsi_pkt_size */ + + #ifdef MPTSAS_FAULTINJECTION + struct mptsas_active_cmdq m_fminj_cmdq; + #endif } mptsas_t; #define MPTSAS_SIZE (sizeof (struct mptsas) - \ sizeof (struct scsi_pkt) + scsi_pkt_size()) /* * Only one of below two conditions is satisfied, we
*** 1253,1263 **** #define MPTSAS_SUCCESS_MUR 2 /* * throttle support. */ ! #define MAX_THROTTLE 32 #define HOLD_THROTTLE 0 #define DRAIN_THROTTLE -1 #define QFULL_THROTTLE -2 /* --- 1265,1278 ---- #define MPTSAS_SUCCESS_MUR 2 /* * throttle support. */ ! ! #define THROTTLE_HI 4096 ! #define THROTTLE_LO 32 ! #define MAX_THROTTLE THROTTLE_LO #define HOLD_THROTTLE 0 #define DRAIN_THROTTLE -1 #define QFULL_THROTTLE -2 /*