Print this page
9695 Slow crash dumps, significantly slower than live core
Reviewed by: Dan Fields <dan.fields@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c
          +++ new/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c
↓ open down ↓ 8 lines elided ↑ open up ↑
   9    9   * Version:
  10   10   * Author:
  11   11   *              Swaminathan K S
  12   12   *              Arun Chandrashekhar
  13   13   *              Manju R
  14   14   *              Rasheed
  15   15   *              Shakeel Bukhari
  16   16   */
  17   17  
  18   18  /*
  19      - * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
       19 + * Copyright 2018 Nexenta Systems, Inc.
  20   20   * Copyright 2015, 2017 Citrus IT Limited. All rights reserved.
  21   21   * Copyright 2015 Garrett D'Amore <garrett@damore.org>
  22   22   */
  23   23  
  24   24  
  25   25  #include <sys/types.h>
  26   26  #include <sys/file.h>
  27   27  #include <sys/atomic.h>
  28   28  #include <sys/scsi/scsi.h>
  29   29  #include <sys/byteorder.h>
↓ open down ↓ 15 lines elided ↑ open up ↑
  45   45  #define MR_COMMAND_SIZE (64*20) /* 1280 bytes */
  46   46  MR_LD_RAID *MR_LdRaidGet(U32 ld, MR_FW_RAID_MAP_ALL *map);
  47   47  U16 MR_TargetIdToLdGet(U32 ldTgtId, MR_FW_RAID_MAP_ALL *map);
  48   48  U16 MR_GetLDTgtId(U32 ld, MR_FW_RAID_MAP_ALL *map);
  49   49  U16 get_updated_dev_handle(PLD_LOAD_BALANCE_INFO, struct IO_REQUEST_INFO *);
  50   50  extern ddi_dma_attr_t mrsas_generic_dma_attr;
  51   51  extern uint32_t mrsas_tbolt_max_cap_maxxfer;
  52   52  extern struct ddi_device_acc_attr endian_attr;
  53   53  extern int      debug_level_g;
  54   54  extern unsigned int     enable_fp;
  55      -volatile int dump_io_wait_time = 90;
       55 +volatile int dump_io_wait_time = 900;
  56   56  extern volatile int  debug_timeout_g;
  57   57  extern int      mrsas_issue_pending_cmds(struct mrsas_instance *);
  58   58  extern int mrsas_complete_pending_cmds(struct mrsas_instance *instance);
  59   59  extern void     push_pending_mfi_pkt(struct mrsas_instance *,
  60   60                          struct mrsas_cmd *);
  61   61  extern U8 MR_BuildRaidContext(struct mrsas_instance *, struct IO_REQUEST_INFO *,
  62   62              MPI2_SCSI_IO_VENDOR_UNIQUE *, MR_FW_RAID_MAP_ALL *);
  63   63  
  64   64  /* Local static prototypes. */
  65   65  static struct mrsas_cmd *mrsas_tbolt_build_cmd(struct mrsas_instance *,
↓ open down ↓ 1035 lines elided ↑ open up ↑
1101 1101          int i;
1102 1102          uint32_t wait_time = dump_io_wait_time;
1103 1103          for (i = 0; i < wait_time; i++) {
1104 1104                  /*
1105 1105                   * Check For Outstanding poll Commands
1106 1106                   * except ldsync command and aen command
1107 1107                   */
1108 1108                  if (instance->fw_outstanding <= 2) {
1109 1109                          break;
1110 1110                  }
1111      -                drv_usecwait(10*MILLISEC);
     1111 +                drv_usecwait(MILLISEC);
1112 1112                  /* complete commands from reply queue */
1113 1113                  (void) mr_sas_tbolt_process_outstanding_cmd(instance);
1114 1114          }
1115 1115          if (instance->fw_outstanding > 2) {
1116 1116                  return (1);
1117 1117          }
1118 1118          return (0);
1119 1119  }
1120 1120  /*
1121 1121   * scsi_pkt handling
↓ open down ↓ 2556 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX