sd: Fix excessive capacity printing on devices with blocks bigger than 512 bytes
authorMartin K. Petersen <martin.petersen@oracle.com>
Tue, 29 Mar 2016 01:18:56 +0000 (21:18 -0400)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 1 Apr 2016 00:59:08 +0000 (20:59 -0400)
commitf08bb1e0dbdd0297258d0b8cd4dbfcc057e57b2a
treeac24f04ece2205d757800420e75113417776ed40
parent38c315992338a6c26050477b50700e0f8e08ff96
sd: Fix excessive capacity printing on devices with blocks bigger than 512 bytes

During revalidate we check whether device capacity has changed before we
decide whether to output disk information or not.

The check for old capacity failed to take into account that we scaled
sdkp->capacity based on the reported logical block size. And therefore
the capacity test would always fail for devices with sectors bigger than
512 bytes and we would print several copies of the same discovery
information.

Avoid scaling sdkp->capacity and instead adjust the value on the fly
when setting the block device capacity and generating fake C/H/S
geometry.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Cc: <stable@vger.kernel.org>
Reported-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Hannes Reinicke <hare@suse.de>
Reviewed-by: Ewan Milne <emilne@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/sd.c
drivers/scsi/sd.h