|
@@ -715,13 +715,21 @@ static void sd_config_discard(struct scsi_disk *sdkp, unsigned int mode)
|
|
|
break;
|
|
|
|
|
|
case SD_LBP_WS16:
|
|
|
- max_blocks = min_not_zero(sdkp->max_ws_blocks,
|
|
|
- (u32)SD_MAX_WS16_BLOCKS);
|
|
|
+ if (sdkp->device->unmap_limit_for_ws)
|
|
|
+ max_blocks = sdkp->max_unmap_blocks;
|
|
|
+ else
|
|
|
+ max_blocks = sdkp->max_ws_blocks;
|
|
|
+
|
|
|
+ max_blocks = min_not_zero(max_blocks, (u32)SD_MAX_WS16_BLOCKS);
|
|
|
break;
|
|
|
|
|
|
case SD_LBP_WS10:
|
|
|
- max_blocks = min_not_zero(sdkp->max_ws_blocks,
|
|
|
- (u32)SD_MAX_WS10_BLOCKS);
|
|
|
+ if (sdkp->device->unmap_limit_for_ws)
|
|
|
+ max_blocks = sdkp->max_unmap_blocks;
|
|
|
+ else
|
|
|
+ max_blocks = sdkp->max_ws_blocks;
|
|
|
+
|
|
|
+ max_blocks = min_not_zero(max_blocks, (u32)SD_MAX_WS10_BLOCKS);
|
|
|
break;
|
|
|
|
|
|
case SD_LBP_ZERO:
|