sd: Fix discard granularity when LBPRZ=1
authorMartin K. Petersen <martin.petersen@oracle.com>
Sat, 5 Mar 2016 22:52:02 +0000 (17:52 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Apr 2016 16:08:39 +0000 (09:08 -0700)
commit 6540a65da90c09590897310e31993b1f6e28485a upstream.

Commit 397737223c59 ("sd: Make discard granularity match logical block
size when LBPRZ=1") accidentally set the granularity to one byte instead
of one logical block on devices that provide deterministic zeroes after
UNMAP.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Reported-by: Mike Snitzer <snitzer@redhat.com>
Reviewed-by: Ewan Milne <emilne@redhat.com>
Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
Fixes: 397737223c59e89dca7305feb6528caef8fbef84
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/sd.c

index bb669d32ccd0daee203a69840313fcb9cf343ee0..cc84ea7d09ccbb947029059ec70909f354a397d2 100644 (file)
@@ -648,7 +648,7 @@ static void sd_config_discard(struct scsi_disk *sdkp, unsigned int mode)
         */
        if (sdkp->lbprz) {
                q->limits.discard_alignment = 0;
-               q->limits.discard_granularity = 1;
+               q->limits.discard_granularity = logical_block_size;
        } else {
                q->limits.discard_alignment = sdkp->unmap_alignment *
                        logical_block_size;