u16 flags = 0;
        struct megasas_pthru_frame *pthru;
 
-       is_logical = MEGASAS_IS_LOGICAL(scp);
+       is_logical = MEGASAS_IS_LOGICAL(scp->device);
        device_id = MEGASAS_DEV_INDEX(scp);
        pthru = (struct megasas_pthru_frame *)cmd->frame;
 
        case WRITE_6:
        case READ_16:
        case WRITE_16:
-               ret = (MEGASAS_IS_LOGICAL(cmd)) ?
+               ret = (MEGASAS_IS_LOGICAL(cmd->device)) ?
                        READ_WRITE_LDIO : READ_WRITE_SYSPDIO;
                break;
        default:
-               ret = (MEGASAS_IS_LOGICAL(cmd)) ?
+               ret = (MEGASAS_IS_LOGICAL(cmd->device)) ?
                        NON_READ_WRITE_LDIO : NON_READ_WRITE_SYSPDIO;
        }
        return ret;
 
        scmd->result = 0;
 
-       if (MEGASAS_IS_LOGICAL(scmd) &&
+       if (MEGASAS_IS_LOGICAL(scmd->device) &&
            (scmd->device->id >= instance->fw_supported_vd_count ||
                scmd->device->lun)) {
                scmd->result = DID_BAD_TARGET << 16;
                goto out_done;
        }
 
-       if ((scmd->cmnd[0] == SYNCHRONIZE_CACHE) && MEGASAS_IS_LOGICAL(scmd) &&
-               (!instance->fw_sync_cache_support)) {
+       if ((scmd->cmnd[0] == SYNCHRONIZE_CACHE) &&
+           MEGASAS_IS_LOGICAL(scmd->device) &&
+           (!instance->fw_sync_cache_support)) {
                scmd->result = DID_OK << 16;
                goto out_done;
        }
        if (!fusion)
                return;
 
-       if (sdev->channel < MEGASAS_MAX_PD_CHANNELS &&
+       if (!MEGASAS_IS_LOGICAL(sdev) &&
                instance->use_seqnum_jbod_fp) {
                pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
                        sdev->id;
 
        instance = megasas_lookup_instance(sdev->host->host_no);
        if (instance->pd_list_not_supported) {
-               if (sdev->channel < MEGASAS_MAX_PD_CHANNELS &&
-                       sdev->type == TYPE_DISK) {
+               if (!MEGASAS_IS_LOGICAL(sdev) && sdev->type == TYPE_DISK) {
                        pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
                                sdev->id;
                        if (instance->pd_list[pd_index].driveState !=
        struct MR_PRIV_DEVICE *mr_device_priv_data;
 
        instance = megasas_lookup_instance(sdev->host->host_no);
-       if (sdev->channel < MEGASAS_MAX_PD_CHANNELS) {
+       if (!MEGASAS_IS_LOGICAL(sdev)) {
                /*
                 * Open the OS scan to the SYSTEM PD
                 */
 
        instance = (struct megasas_instance *)sdev->host->hostdata;
        fusion = instance->ctrl_context;
 
-       if (sdev->channel < MEGASAS_MAX_PD_CHANNELS) {
+       if (!MEGASAS_IS_LOGICAL(sdev)) {
                if (instance->use_seqnum_jbod_fp) {
-                               pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
-                                               sdev->id;
-                               pd_sync = (void *)fusion->pd_seq_sync
-                                               [(instance->pd_seq_map_id - 1) & 1];
-                               devhandle = pd_sync->seq[pd_index].devHandle;
+                       pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL)
+                                   + sdev->id;
+                       pd_sync = (void *)fusion->pd_seq_sync
+                                       [(instance->pd_seq_map_id - 1) & 1];
+                       devhandle = pd_sync->seq[pd_index].devHandle;
                } else
                        sdev_printk(KERN_ERR, sdev, "Firmware expose tmCapable"
                                " without JBOD MAP support from %s %d\n", __func__, __LINE__);