kernels/linux-2.4.0/drivers/scsi/cpqfcTSinit.c
// The file "hosts.h" says not to call scsi_done from
// inside _queuecommand, so we'll do it from the heartbeat timer
The file "hosts.h" says not to call scsi_done from
inside _queuecommand, so we'll do it from the heartbeat timer
The file " hosts . h " says not to call scsi_done from inside _queuecommand so we ' ll do it from the heartbeat timer
static void QueBadTargetCmnd( CPQFCHBA *cpqfcHBAdata, Scsi_Cmnd *Cmnd)
{
  int i;
  for( i=0; i< CPQFCTS_MAX_TARGET_ID; i++)
  {    
    if( cpqfcHBAdata->BadTargetCmnd[i] == NULL )
    {
      cpqfcHBAdata->BadTargetCmnd[i] = Cmnd;
      break;
    }
  }
}
static void QueBadTargetCmnd ( CPQFCHBA * cpqfcHBAdata , Scsi_Cmnd * Cmnd ) { int i ; for ( i = 0 ; i < CPQFCTS_MAX_TARGET_ID ; i ++ ) { if ( cpqfcHBAdata -> BadTargetCmnd [ i ] == NULL ) { cpqfcHBAdata -> BadTargetCmnd [ i ] = Cmnd ; break ; } } }
The file "hosts.h" says not to call scsi_done from
inside _queuecommand, so we'll do it from the heartbeat timer
The file " hosts . h " says not to call scsi_done from inside _queuecommand so we ' ll do it from the heartbeat timer
//    printk(" can't find target %d\n", Cmnd->target); // find spare slot //      printk(" BadTargetCmnd[%d] %p Queued, chnl/target/lun %d/%d/%d\n", //          i,Cmnd, Cmnd->channel, Cmnd->target, Cmnd->lun);