--- ./source/private_module/vol/vol_res/vol_res_metadata.c	2018-02-09 13:47:03.000000000 +0000
+++ ./source/private_module/vol/vol_res/vol_res_metadata.c.hotpatch	2019-03-20 03:10:49.000000000 +0000
@@ -9942,12 +9942,9 @@
     }
     else
     {
-        //DATAȡvirtualGrainSizeTHICK/THIN/SNAP COWȡcowGrainSize
         grainSize = (META_TYPE_DATA == metaType) ? dataVolCtrl->virtualGrainSize
             : dataVolCtrl->metaVolObj->cowGrainSize;
         startSnapKey = (SNAP_BTREE_KEY_S *)(void *)queryLbaBmpPri->startKey;
-        /* COWͿӳûкϲkeygrainIdǰƫһextentgrain */
-        //startSnapKey->grainId = VOL_LBA_TO_GRAINID(req->objectLba, grainSize);
         minGrainId = VOL_LBA_TO_GRAINID(req->objectLba, grainSize);
         startSnapKey->grainId = minGrainId;
         startSnapKey->timePoint = 0;
@@ -9960,6 +9957,9 @@
     {
         maxGrainId = INVALID_VALUE64;
     }
+	if ((QUERY_LBA_BMP_ALLOC_ID == bmpGenIo->bmpPub.queryType || QUERY_LBA_BMP_ID == bmpGenIo->bmpPub.queryType)){
+		maxGrainId = VOL_LBA_TO_GRAINID(dataVolCtrl->volumeSize - 1, grainSize);
+	}
     chunkSize = bmpGenIo->bmpPub.chunkSize;
     queryLbaBmpPri->minGrainId = minGrainId;
     queryLbaBmpPri->maxGrainId = maxGrainId;
