Print this page
re #8564, rb4224 "mutex_enter: bad mutex" panic when under heavy load
        
*** 16,25 ****
--- 16,26 ----
   * fields enclosed by brackets "[]" replaced with your own identifying
   * information: Portions Copyright [yyyy] [name of copyright owner]
   *
   * CDDL HEADER END
   */
+ 
  /*
   * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
   * Copyright 2013, Nexenta Systems, Inc. All rights reserved.
   */
  
*** 1246,1256 ****
  
          mutex_enter(&ptask->pt_sess->ps_mutex);
          mutex_enter(&ptask->pt_mutex);
          if (avl_find(&ptask->pt_sess->ps_task_list, ptask, &where) == NULL) {
                  pppt_task_update_state(ptask, PTS_ACTIVE);
!                 /* Manually increment refcnt, sincd we hold the mutex... */
                  ptask->pt_refcnt++;
                  avl_insert(&ptask->pt_sess->ps_task_list, ptask, where);
                  mutex_exit(&ptask->pt_mutex);
                  mutex_exit(&ptask->pt_sess->ps_mutex);
                  return (PPPT_STATUS_SUCCESS);
--- 1247,1257 ----
  
          mutex_enter(&ptask->pt_sess->ps_mutex);
          mutex_enter(&ptask->pt_mutex);
          if (avl_find(&ptask->pt_sess->ps_task_list, ptask, &where) == NULL) {
                  pppt_task_update_state(ptask, PTS_ACTIVE);
!                 /* Manually increment refcnt, since we hold the mutex... */
                  ptask->pt_refcnt++;
                  avl_insert(&ptask->pt_sess->ps_task_list, ptask, where);
                  mutex_exit(&ptask->pt_mutex);
                  mutex_exit(&ptask->pt_sess->ps_mutex);
                  return (PPPT_STATUS_SUCCESS);