static int mts_scsi_abort (Scsi_Cmnd *srb) /* interrupt context (!) */ /* FIXME this is about to become task context */ { struct mts_desc* desc = (struct mts_desc*)(srb->host->hostdata[0]); MTS_DEBUG_GOT_HERE(); mts_request_abort(desc); mts_urb_abort(desc); return SCSI_ABORT_PENDING; }
static inline void mts_wait_abort(struct mts_desc* desc) { mts_request_abort(desc); while( !atomic_read(&desc->lock.count) ) { /* Is there a function to check if the semaphore is locked? */ schedule_timeout( MTS_ABORT_TIMEOUT ); MTS_DEBUG_GOT_HERE(); mts_urb_abort(desc); } }