Print this page
4780 comstar iSCSI target shouldn't abuse ddi_get_time(9f)
Reviewed by: Eric Diven <eric.diven@delphix.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

*** 19,29 **** * CDDL HEADER END */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * ! * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #include <sys/cpuvar.h> #include <sys/types.h> #include <sys/conf.h> --- 19,29 ---- * CDDL HEADER END */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * ! * Copyright 2014 Nexenta Systems, Inc. All rights reserved. */ #include <sys/cpuvar.h> #include <sys/types.h> #include <sys/conf.h>
*** 3123,3133 **** * the missing command is delivered to the SCSI layer. * Irrespective of the order of insertion into the * staging queue, the commands are processed out of the * queue in cmdSN order only. */ ! rx_pdu->isp_queue_time = ddi_get_time(); iscsit_add_pdu_to_queue(ist, rx_pdu); mutex_exit(&ist->ist_sn_mutex); return (ISCSIT_CMDSN_GT_EXPCMDSN); } else if (iscsit_sna_lt(ntohl(hdr->cmdsn), ist->ist_expcmdsn)) { DTRACE_PROBE3(cmdsn__lt__expcmdsn, iscsit_sess_t *, ist, --- 3123,3133 ---- * the missing command is delivered to the SCSI layer. * Irrespective of the order of insertion into the * staging queue, the commands are processed out of the * queue in cmdSN order only. */ ! rx_pdu->isp_queue_time = gethrtime(); iscsit_add_pdu_to_queue(ist, rx_pdu); mutex_exit(&ist->ist_sn_mutex); return (ISCSIT_CMDSN_GT_EXPCMDSN); } else if (iscsit_sna_lt(ntohl(hdr->cmdsn), ist->ist_expcmdsn)) { DTRACE_PROBE3(cmdsn__lt__expcmdsn, iscsit_sess_t *, ist,
*** 3393,3404 **** /* * If the PDU wait time has not exceeded threshold * stop scanning the staging queue until the timer * fires again */ ! if ((ddi_get_time() - next_pdu->isp_queue_time) ! < rxpdu_queue_threshold) { mutex_exit(&ist->ist_sn_mutex); return; } /* * Remove the next PDU from the queue and post it --- 3393,3404 ---- /* * If the PDU wait time has not exceeded threshold * stop scanning the staging queue until the timer * fires again */ ! if ((gethrtime() - next_pdu->isp_queue_time) ! < (rxpdu_queue_threshold * NANOSEC)) { mutex_exit(&ist->ist_sn_mutex); return; } /* * Remove the next PDU from the queue and post it