Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sd: Fix discard granularity when LBPRZ=1

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
Cc: <stable@vger.kernel.org> #v4.4+

+1 -1
+1 -1
drivers/scsi/sd.c
··· 648 648 */ 649 649 if (sdkp->lbprz) { 650 650 q->limits.discard_alignment = 0; 651 - q->limits.discard_granularity = 1; 651 + q->limits.discard_granularity = logical_block_size; 652 652 } else { 653 653 q->limits.discard_alignment = sdkp->unmap_alignment * 654 654 logical_block_size;