SCSI fixes on 20150205
This patch set is fixing two serious problems which have turned up late in the release cycle. The first fixes a problem with 4k sector disks where the transfer length (amount of data sent to the disk) was getting increased every time the disk was revalidated leading to potential for overflows. The other is a regression oops fix for some of our last merge window code. Signed-off-by: James Bottomley <JBottomley@Parallels.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAABAgAGBQJU062BAAoJEDeqqVYsXL0M1AcH/1y6cuHViSz/E05/qt/0TUMA 1ps2jCHCJqZXZhckIcB5DKZ2nkbrcN0OCsTx35BV9tw8eTuI6sJPOV92qw9mcEnF wOTiKJU+nU6qDGeem0PocFkd7gdfr83mMU97RYfatzavSnO83UVoSNGXBIZjYOt4 BxhxcdiMMi36XCD0sl3yKBkSKV/h3TJk2qDkwCJLoX6rWgOKNGnjBXRBcKYicY8P 3E2Z01ok1v7uzaDTpdkNj3HsR5BdlAPEw1wbMfyu85Dc+Xi1UrQXEBi7Es0CcVt/ byMJK2bm0eO7pZ1iSn2Ckz/+YRbmTkLYxcnB3shrgDNuajL9IXQxF6lJ+Xe1rKo= =Lxp6 -----END PGP SIGNATURE----- Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi Pull SCSI fixes from James Bottomley: "This patch set is fixing two serious problems which have turned up late in the release cycle. The first fixes a problem with 4k sector disks where the transfer length (amount of data sent to the disk) was getting increased every time the disk was revalidated leading to potential for overflows. The other is a regression oops fix for some of our last merge window code" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: sd: Fix max transfer length for 4k disks scsi: fix device handler detach oops
This commit is contained in:
commit
14365ea2b8
|
@ -136,11 +136,12 @@ static void __detach_handler (struct kref *kref)
|
|||
struct scsi_device_handler *scsi_dh = scsi_dh_data->scsi_dh;
|
||||
struct scsi_device *sdev = scsi_dh_data->sdev;
|
||||
|
||||
scsi_dh->detach(sdev);
|
||||
|
||||
spin_lock_irq(sdev->request_queue->queue_lock);
|
||||
sdev->scsi_dh_data = NULL;
|
||||
spin_unlock_irq(sdev->request_queue->queue_lock);
|
||||
|
||||
scsi_dh->detach(sdev);
|
||||
sdev_printk(KERN_NOTICE, sdev, "%s: Detached\n", scsi_dh->name);
|
||||
module_put(scsi_dh->module);
|
||||
}
|
||||
|
|
|
@ -2800,9 +2800,11 @@ static int sd_revalidate_disk(struct gendisk *disk)
|
|||
*/
|
||||
sd_set_flush_flag(sdkp);
|
||||
|
||||
max_xfer = min_not_zero(queue_max_hw_sectors(sdkp->disk->queue),
|
||||
sdkp->max_xfer_blocks);
|
||||
max_xfer = sdkp->max_xfer_blocks;
|
||||
max_xfer <<= ilog2(sdp->sector_size) - 9;
|
||||
|
||||
max_xfer = min_not_zero(queue_max_hw_sectors(sdkp->disk->queue),
|
||||
max_xfer);
|
||||
blk_queue_max_hw_sectors(sdkp->disk->queue, max_xfer);
|
||||
set_capacity(disk, sdkp->capacity);
|
||||
sd_config_write_same(sdkp);
|
||||
|
|
Loading…
Reference in New Issue