struct sbp2scsi_host_info *hi;
        int result = DID_NO_CONNECT << 16;
 
-       if (!sbp2util_node_is_available(scsi_id))
+       if (unlikely(!sbp2util_node_is_available(scsi_id)))
                goto done;
 
        hi = scsi_id->hi;
 
-       if (!hi) {
+       if (unlikely(!hi)) {
                SBP2_ERR("sbp2scsi_host_info is NULL - this is bad!");
                goto done;
        }
        /* Multiple units are currently represented to the SCSI core as separate
         * targets, not as one target with multiple LUs. Therefore return
         * selection time-out to any IO directed at non-zero LUNs. */
-       if (SCpnt->device->lun)
+       if (unlikely(SCpnt->device->lun))
                goto done;
 
        /* handle the request sense command here (auto-request sense) */
                return 0;
        }
 
-       if (!hpsb_node_entry_valid(scsi_id->ne)) {
+       if (unlikely(!hpsb_node_entry_valid(scsi_id->ne))) {
                SBP2_ERR("Bus reset in progress - rejecting command");
                result = DID_BUS_BUSY << 16;
                goto done;
 
        /* Bidirectional commands are not yet implemented,
         * and unknown transfer direction not handled. */
-       if (SCpnt->sc_data_direction == DMA_BIDIRECTIONAL) {
+       if (unlikely(SCpnt->sc_data_direction == DMA_BIDIRECTIONAL)) {
                SBP2_ERR("Cannot handle DMA_BIDIRECTIONAL - rejecting command");
                result = DID_ERROR << 16;
                goto done;