Skip to content

Commit b0dadb8

Browse files
Christoph Hellwigaxboe
authored andcommitted
sd: add a sd_disable_discard helper
Add helper to disable discard when it is not supported and use it instead of sd_config_discard in the I/O completion handler. This avoids touching more fields than required in the I/O completion handler and prepares for converting sd to use the atomic queue limits API. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Bart Van Assche <[email protected]> Reviewed-by: Damien Le Moal <[email protected]> Reviewed-by: Martin K. Petersen <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent b3491b0 commit b0dadb8

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

drivers/scsi/sd.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,12 @@ static unsigned char sd_setup_protect_cmnd(struct scsi_cmnd *scmd,
821821
return protect;
822822
}
823823

824+
static void sd_disable_discard(struct scsi_disk *sdkp)
825+
{
826+
sdkp->provisioning_mode = SD_LBP_DISABLE;
827+
blk_queue_max_discard_sectors(sdkp->disk->queue, 0);
828+
}
829+
824830
static void sd_config_discard(struct scsi_disk *sdkp, unsigned int mode)
825831
{
826832
struct request_queue *q = sdkp->disk->queue;
@@ -2245,12 +2251,12 @@ static int sd_done(struct scsi_cmnd *SCpnt)
22452251
case 0x24: /* INVALID FIELD IN CDB */
22462252
switch (SCpnt->cmnd[0]) {
22472253
case UNMAP:
2248-
sd_config_discard(sdkp, SD_LBP_DISABLE);
2254+
sd_disable_discard(sdkp);
22492255
break;
22502256
case WRITE_SAME_16:
22512257
case WRITE_SAME:
22522258
if (SCpnt->cmnd[1] & 8) { /* UNMAP */
2253-
sd_config_discard(sdkp, SD_LBP_DISABLE);
2259+
sd_disable_discard(sdkp);
22542260
} else {
22552261
sdkp->device->no_write_same = 1;
22562262
sd_config_write_same(sdkp);

0 commit comments

Comments
 (0)