diff options
author | Joyce McIntosh <joyce.mcintosh@nexenta.com> | 2018-08-07 12:13:16 +0300 |
---|---|---|
committer | Richard Lowe <richlowe@richlowe.net> | 2018-08-07 19:46:09 +0000 |
commit | d8873b3136f0985c9e33ff8801644e1b4253b36c (patch) | |
tree | 62d741d718cc2f3e6163f556190f995584dfe0dd | |
parent | 6ccea42291d6cef3970fbb35ece075406851267f (diff) | |
download | illumos-joyent-d8873b3136f0985c9e33ff8801644e1b4253b36c.tar.gz |
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>
Approved by: Richard Lowe <richlowe@richlowe.net>
-rw-r--r-- | usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c | 6 | ||||
-rw-r--r-- | usr/src/uts/common/io/sata/adapters/ahci/ahci.c | 17 |
2 files changed, 14 insertions, 9 deletions
diff --git a/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c b/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c index fd8d417884..0018a13457 100644 --- a/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c +++ b/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c @@ -16,7 +16,7 @@ */ /* - * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + * Copyright 2018 Nexenta Systems, Inc. * Copyright 2015, 2017 Citrus IT Limited. All rights reserved. * Copyright 2015 Garrett D'Amore <garrett@damore.org> */ @@ -52,7 +52,7 @@ extern uint32_t mrsas_tbolt_max_cap_maxxfer; extern struct ddi_device_acc_attr endian_attr; extern int debug_level_g; extern unsigned int enable_fp; -volatile int dump_io_wait_time = 90; +volatile int dump_io_wait_time = 900; extern volatile int debug_timeout_g; extern int mrsas_issue_pending_cmds(struct mrsas_instance *); extern int mrsas_complete_pending_cmds(struct mrsas_instance *instance); @@ -1108,7 +1108,7 @@ wait_for_outstanding_poll_io(struct mrsas_instance *instance) if (instance->fw_outstanding <= 2) { break; } - drv_usecwait(10*MILLISEC); + drv_usecwait(MILLISEC); /* complete commands from reply queue */ (void) mr_sas_tbolt_process_outstanding_cmd(instance); } diff --git a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c index d9e083a10b..10e71db3b9 100644 --- a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c +++ b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c @@ -21,7 +21,7 @@ /* * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + * Copyright 2018 Nexenta Systems, Inc. All rights reserved. */ /* @@ -1143,7 +1143,7 @@ ahci_detach(dev_info_t *dip, ddi_detach_cmd_t cmd) */ static int ahci_getinfo(dev_info_t *dip, ddi_info_cmd_t infocmd, - void *arg, void **result) + void *arg, void **result) { #ifndef __lock_lint _NOTE(ARGUNUSED(dip)) @@ -1815,15 +1815,19 @@ ahci_do_sync_start(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp, drv_usectohz((clock_t)spkt->satapkt_time * 1000000); while (spkt->satapkt_reason == SATA_PKT_BUSY) { - mutex_exit(&ahci_portp->ahciport_mutex); - /* Simulate the interrupt */ + mutex_exit(&ahci_portp->ahciport_mutex); ahci_port_intr(ahci_ctlp, ahci_portp, port); + mutex_enter(&ahci_portp->ahciport_mutex); - drv_usecwait(AHCI_10MS_USECS); + if (spkt->satapkt_reason != SATA_PKT_BUSY) + break; + mutex_exit(&ahci_portp->ahciport_mutex); + drv_usecwait(AHCI_1MS_USECS); mutex_enter(&ahci_portp->ahciport_mutex); - pkt_timeout_ticks -= AHCI_10MS_TICKS; + + pkt_timeout_ticks -= AHCI_1MS_TICKS; if (pkt_timeout_ticks < 0) { cmn_err(CE_WARN, "!ahci%d: ahci_do_sync_start " "port %d satapkt 0x%p timed out\n", @@ -1835,6 +1839,7 @@ ahci_do_sync_start(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp, mutex_enter(&ahci_portp->ahciport_mutex); } } + ahci_portp->ahciport_flags &= ~AHCI_PORT_FLAG_POLLING; return (AHCI_SUCCESS); |