--- ./source/private_module/standard/scsi_alua_feature.c	2018-04-13 09:03:56.000000000 +0000
+++ ./source/private_module/standard/scsi_alua_feature.c.hotpatch	2020-01-09 01:49:03.000000000 +0000
@@ -588,10 +588,10 @@
         return RETURN_ERROR;
     }
 
-    if (!scsiIsHcLunItf(devLunId))
+    if (devLunId >= scsiGetMaxLunNumber())
     {
-        *site = 0;
-        return RETURN_OK;
+        *site = SCSI_HYPERMETRO_LOCAL_SITE;
+        return RETURN_ERROR;
     }
     
     ret = getLunHyperClusterSiteIntf(devLunId, &hyperSite);
@@ -3226,19 +3226,19 @@
     int32_t  ret = RETURN_OK;
     uint32_t nodeId = 0;
     uint32_t maxNode = 0;
-
+    uint8_t  siteId = 0;
+    uint32_t devLunId = tgtCmd->uiDevLunId;
     maxNode = scsiGetRtpiMaxLocNid();
-    for (nodeId = 0; nodeId < maxNode; nodeId++)
-    {
-        ret = scsiHyperMetroGetTpgData(tgtCmd, para, 0, (uint8_t)nodeId, getTpgDesc);
-        if (RETURN_OK != ret)
-        {
-            return RETURN_ERROR;
-        }
+    ret = scsiGetLunAluaHyperSite(devLunId, &siteId);
+    if (RETURN_OK != ret){
+        SCSI_SET_RSP_BUSY(tgtCmd);
+		return RETURN_ERROR;
+    }
+    for (nodeId = 0; nodeId < maxNode; nodeId++){
+        ret = scsiHyperMetroGetTpgData(tgtCmd, para, siteId, (uint8_t)nodeId, getTpgDesc);
+        if (RETURN_OK != ret){return RETURN_ERROR;}
     }
-
     return RETURN_OK;
-
 }
 
 #endif
