block/swim: Fix IO error at end of medium
authorFinn Thain <fthain@telegraphics.com.au>
Thu, 12 Apr 2018 00:50:14 +0000 (20:50 -0400)
committerJens Axboe <axboe@kernel.dk>
Tue, 17 Apr 2018 03:49:35 +0000 (21:49 -0600)
commit5a13388d7aa1177b98d7168330ecbeeac52f844d
tree904df7828bd422cd725e53379d8ac96dbc01f19d
parent8a500df63d07d8aee44b7ee2c54e462e47ce93ec
block/swim: Fix IO error at end of medium

Reading to the end of a 720K disk results in an IO error instead of EOF
because the block layer thinks the disk has 2880 sectors. (Partly this
is a result of inverted logic of the ONEMEG_MEDIA bit that's now fixed.)

Initialize the density and head count in swim_add_floppy() to agree
with the device size passed to set_capacity() during drive probe.

Call set_capacity() again upon device open, after refreshing the density
and head count values.

Cc: Laurent Vivier <lvivier@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: stable@vger.kernel.org # v4.14+
Tested-by: Stan Johnson <userm57@yahoo.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Acked-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/swim.c