Print this page
XXXX introduce drv_sectohz


4249                 ilu->ilu_flags |= ILU_STALL_DEREGISTER;
4250                 mutex_exit(&stmf_state.stmf_lock);
4251                 stmf_task_lu_check_freelist(ilu);
4252                 /*
4253                  * we do not care about the accuracy of
4254                  * ilu_ntasks_min_free, so we don't lock here
4255                  */
4256                 ilu->ilu_ntasks_min_free = ilu->ilu_ntasks_free;
4257                 mutex_enter(&stmf_state.stmf_lock);
4258                 ilu->ilu_flags &= ~ILU_STALL_DEREGISTER;
4259                 cv_broadcast(&stmf_state.stmf_cv);
4260                 if (ddi_get_lbolt() >= endtime)
4261                         break;
4262         }
4263 }
4264 
4265 void
4266 stmf_do_ilu_timeouts(stmf_i_lu_t *ilu)
4267 {
4268         clock_t l = ddi_get_lbolt();
4269         clock_t ps = drv_usectohz(1000000);
4270         stmf_i_scsi_task_t *itask;
4271         scsi_task_t *task;
4272         uint32_t to;
4273 
4274         mutex_enter(&ilu->ilu_task_lock);
4275         for (itask = ilu->ilu_tasks; itask != NULL;
4276             itask = itask->itask_lu_next) {
4277                 if (itask->itask_flags & (ITASK_IN_FREE_LIST |
4278                     ITASK_BEING_ABORTED)) {
4279                         continue;
4280                 }
4281                 task = itask->itask_task;
4282                 if (task->task_timeout == 0)
4283                         to = stmf_default_task_timeout;
4284                 else
4285                         to = task->task_timeout;
4286                 if ((itask->itask_start_time + (to * ps)) > l)
4287                         continue;
4288                 stmf_abort(STMF_QUEUE_TASK_ABORT, task,
4289                     STMF_TIMEOUT, NULL);




4249                 ilu->ilu_flags |= ILU_STALL_DEREGISTER;
4250                 mutex_exit(&stmf_state.stmf_lock);
4251                 stmf_task_lu_check_freelist(ilu);
4252                 /*
4253                  * we do not care about the accuracy of
4254                  * ilu_ntasks_min_free, so we don't lock here
4255                  */
4256                 ilu->ilu_ntasks_min_free = ilu->ilu_ntasks_free;
4257                 mutex_enter(&stmf_state.stmf_lock);
4258                 ilu->ilu_flags &= ~ILU_STALL_DEREGISTER;
4259                 cv_broadcast(&stmf_state.stmf_cv);
4260                 if (ddi_get_lbolt() >= endtime)
4261                         break;
4262         }
4263 }
4264 
4265 void
4266 stmf_do_ilu_timeouts(stmf_i_lu_t *ilu)
4267 {
4268         clock_t l = ddi_get_lbolt();
4269         clock_t ps = drv_sectohz(1);
4270         stmf_i_scsi_task_t *itask;
4271         scsi_task_t *task;
4272         uint32_t to;
4273 
4274         mutex_enter(&ilu->ilu_task_lock);
4275         for (itask = ilu->ilu_tasks; itask != NULL;
4276             itask = itask->itask_lu_next) {
4277                 if (itask->itask_flags & (ITASK_IN_FREE_LIST |
4278                     ITASK_BEING_ABORTED)) {
4279                         continue;
4280                 }
4281                 task = itask->itask_task;
4282                 if (task->task_timeout == 0)
4283                         to = stmf_default_task_timeout;
4284                 else
4285                         to = task->task_timeout;
4286                 if ((itask->itask_start_time + (to * ps)) > l)
4287                         continue;
4288                 stmf_abort(STMF_QUEUE_TASK_ABORT, task,
4289                     STMF_TIMEOUT, NULL);