WSL2-Linux-Kernel/drivers/scsi
Saurabh Sengar 8e74f5ceea scsi: storvsc: Correct reporting of Hyper-V I/O size limits
[ Upstream commit 1d3e098078 ]

Current code is based on the idea that the max number of SGL entries
also determines the max size of an I/O request.  While this idea was
true in older versions of the storvsc driver when SGL entry length
was limited to 4 Kbytes, commit 3d9c3dcc58 ("scsi: storvsc: Enable
scatterlist entry lengths > 4Kbytes") removed that limitation. It's
now theoretically possible for the block layer to send requests that
exceed the maximum size supported by Hyper-V. This problem doesn't
currently happen in practice because the block layer defaults to a
512 Kbyte maximum, while Hyper-V in Azure supports 2 Mbyte I/O sizes.
But some future configuration of Hyper-V could have a smaller max I/O
size, and the block layer could exceed that max.

Fix this by correctly setting max_sectors as well as sg_tablesize to
reflect the maximum I/O size that Hyper-V reports. While allowing
I/O sizes larger than the block layer default of 512 Kbytes doesn’t
provide any noticeable performance benefit in the tests we ran, it's
still appropriate to report the correct underlying Hyper-V capabilities
to the Linux block layer.

Also tweak the virt_boundary_mask to reflect that the required
alignment derives from Hyper-V communication using a 4 Kbyte page size,
and not on the guest page size, which might be bigger (eg. ARM64).

Link: https://lore.kernel.org/r/1655190355-28722-1-git-send-email-ssengar@linux.microsoft.com
Fixes: 3d9c3dcc58 ("scsi: storvsc: Enable scatter list entry lengths > 4Kbytes")
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-29 09:03:22 +02:00
..
aacraid
aic7xxx
aic94xx
arcmsr
arm scsi: acornscsi: Remove scsi_cmd_to_tag() reference 2021-10-04 21:54:18 -04:00
be2iscsi
bfa scsi: bfa: Replace snprintf() with sysfs_emit() 2022-04-13 20:59:02 +02:00
bnx2fc scsi: bnx2fc: Make bnx2fc_recv_frame() mp safe 2022-02-08 18:34:11 +01:00
bnx2i scsi: iscsi: Merge suspend fields 2022-04-27 14:38:56 +02:00
csiostor scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn() 2021-11-18 19:16:52 +01:00
cxgbi scsi: iscsi: Merge suspend fields 2022-04-27 14:38:56 +02:00
cxlflash
device_handler scsi: scsi_dh_alua: Properly handle the ALUA transitioning state 2022-05-25 09:57:34 +02:00
dpt
elx scsi: elx: efct: Don't use GFP_KERNEL under spin lock 2022-02-01 17:27:07 +01:00
esas2r
fcoe scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac() 2022-06-09 10:23:07 +02:00
fnic scsi: fnic: Fix a tracing statement 2022-04-08 14:23:33 +02:00
hisi_sas scsi: hisi_sas: Limit users changing debugfs BIST count value 2022-04-13 20:59:07 +02:00
ibmvscsi scsi: ibmvfc: Allocate/free queue resource only during probe/remove 2022-06-29 09:03:19 +02:00
ibmvscsi_tgt scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024 2022-04-20 09:34:15 +02:00
isci
libfc scsi: libfc: Fix use after free in fc_exch_abts_resp() 2022-04-13 20:59:08 +02:00
libsas scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commands 2022-04-08 14:22:54 +02:00
lpfc scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd completion 2022-06-22 14:21:57 +02:00
megaraid scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan 2022-04-20 09:34:17 +02:00
mpi3mr scsi: mpi3mr: Fix memory leaks 2022-04-13 20:59:05 +02:00
mpt3sas scsi: mpt3sas: Fix out-of-bounds compiler warning 2022-06-22 14:21:57 +02:00
mvsas scsi: mvsas: Add PCI ID of RocketRaid 2640 2022-04-20 09:34:17 +02:00
pcmcia
pm8001 scsi: pm80xx: Enable upper inbound, outbound queues 2022-04-20 09:34:11 +02:00
qedf scsi: qedf: Change context reset messages to ratelimited 2022-02-16 12:56:13 +01:00
qedi scsi: qedi: Fix failed disconnect handling 2022-04-27 14:38:57 +02:00
qla2xxx scsi: qla2xxx: Fix missed DMA unmap for aborted commands 2022-05-25 09:57:35 +02:00
qla4xxx
smartpqi scsi: smartpqi: Fix kdump issue when controller is locked up 2022-04-13 20:59:04 +02:00
snic
sym53c8xx_2
ufs scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled 2022-06-09 10:23:22 +02:00
.gitignore
3w-9xxx.c
3w-9xxx.h
3w-sas.c
3w-sas.h
3w-xxxx.c
3w-xxxx.h
53c700.c
53c700.h
53c700.scr
53c700_d.h_shipped
BusLogic.c
BusLogic.h
FlashPoint.c
Kconfig
Makefile
NCR5380.c
NCR5380.h
a100u2w.c
a100u2w.h
a2091.c
a2091.h
a3000.c
a3000.h
a4000t.c
advansys.c scsi: advansys: Fix kernel pointer leak 2021-11-25 09:48:27 +01:00
aha152x.c scsi: aha152x: Fix aha152x_setup() __setup handler return value 2022-04-13 20:59:07 +02:00
aha152x.h
aha1542.c
aha1542.h
aha1740.c
aha1740.h
am53c974.c
atari_scsi.c
atp870u.c
atp870u.h
bvme6000_scsi.c
ch.c
constants.c
dc395x.c scsi: dc395x: Fix a missing check on list iterator 2022-06-09 10:23:22 +02:00
dc395x.h
dmx3191d.c
dpt_i2o.c
dpti.h
esp_scsi.c
esp_scsi.h
fdomain.c
fdomain.h
fdomain_isa.c
fdomain_pci.c
g_NCR5380.c
gvp11.c
gvp11.h
hosts.c scsi: core: Avoid leaving shost->last_reset with stale value if EH does not run 2021-11-18 19:15:51 +01:00
hpsa.c
hpsa.h
hpsa_cmd.h
hptiop.c
hptiop.h
imm.c
imm.h
initio.c
initio.h
ipr.c scsi: ipr: Fix missing/incorrect resource cleanup in error case 2022-06-22 14:21:57 +02:00
ipr.h
ips.c
ips.h
iscsi_boot_sysfs.c
iscsi_tcp.c
iscsi_tcp.h
jazz_esp.c
lasi700.c
libiscsi.c scsi: iscsi: Fix NOP handling during conn recovery 2022-04-27 14:38:56 +02:00
libiscsi_tcp.c scsi: iscsi: Merge suspend fields 2022-04-27 14:38:56 +02:00
mac53c94.c
mac53c94.h
mac_esp.c
mac_scsi.c
megaraid.c scsi: megaraid: Fix error check return value of register_chrdev() 2022-06-09 10:22:34 +02:00
megaraid.h
mesh.c
mesh.h
mvme16x_scsi.c
mvme147.c
mvme147.h
mvumi.c
mvumi.h
myrb.c scsi: myrb: Fix up null pointer access on myrb_cleanup() 2022-06-14 18:36:22 +02:00
myrb.h
myrs.c scsi: myrs: Fix crash in error case 2022-02-16 12:56:14 +01:00
myrs.h
ncr53c8xx.c scsi: ncr53c8xx: Remove unused retrieve_from_waiting_list() function 2021-09-13 22:15:47 -04:00
ncr53c8xx.h
nsp32.c
nsp32.h
nsp32_debug.c
nsp32_io.h
pmcraid.c scsi: pmcraid: Fix missing resource cleanup in error case 2022-06-22 14:21:57 +02:00
pmcraid.h
ppa.c
ppa.h
ps3rom.c
qla1280.c
qla1280.h
qlogicfas.c
qlogicfas408.c
qlogicfas408.h
qlogicpti.c
qlogicpti.h
raid_class.c
script_asm.pl
scsi.c scsi: core: Fix scsi_device_max_queue_depth() 2022-01-27 11:04:10 +01:00
scsi.h
scsi_bsg.c
scsi_common.c
scsi_debug.c scsi: scsi_debug: Fix zone transition to full condition 2022-06-29 09:03:21 +02:00
scsi_debugfs.c scsi: core: Show SCMD_LAST in text form 2022-01-27 11:05:22 +01:00
scsi_debugfs.h
scsi_devinfo.c
scsi_dh.c
scsi_error.c scsi: core: sd: Add silence_suspend flag to suppress some PM messages 2022-04-08 14:22:54 +02:00
scsi_ioctl.c scsi: scsi_ioctl: Validate command size 2021-11-18 19:15:51 +01:00
scsi_lib.c scsi: core: Fix scsi_mode_sense() buffer length handling 2021-11-25 09:48:26 +01:00
scsi_lib_dma.c
scsi_logging.c
scsi_logging.h
scsi_netlink.c
scsi_pm.c scsi: block: pm: Always set request queue runtime active in blk_post_runtime_resume() 2022-01-27 11:04:15 +01:00
scsi_priv.h
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c scsi: core: Fix sbitmap depth in scsi_realloc_sdev_budget_map() 2022-04-13 20:59:15 +02:00
scsi_sysctl.c
scsi_sysfs.c scsi: core: sysfs: Fix setting device state to SDEV_RUNNING 2021-12-01 09:04:50 +01:00
scsi_trace.c
scsi_transport_api.h
scsi_transport_fc.c scsi: scsi_transport_fc: Fix FPIN Link Integrity statistics counters 2022-04-08 14:22:54 +02:00
scsi_transport_iscsi.c scsi: iscsi: Exclude zero from the endpoint ID range 2022-06-29 09:03:21 +02:00
scsi_transport_sas.c
scsi_transport_spi.c
scsi_transport_srp.c
scsicam.c
sd.c scsi: sd: Fix potential NULL pointer dereference 2022-06-14 18:36:13 +02:00
sd.h
sd_dif.c
sd_zbc.c scsi: sd_zbc: Support disks with more than 2**32 logical blocks 2021-09-21 23:52:55 -04:00
sense_codes.h
ses.c scsi: ses: Fix unsigned comparison with less than zero 2021-09-28 22:42:06 -04:00
sg.c block: drop unused includes in <linux/genhd.h> 2022-03-16 14:23:46 +01:00
sgiwd93.c
sim710.c
sni_53c710.c
sr.c scsi: sr: Fix typo in CDROM(CLOSETRAY|EJECT) handling 2022-04-13 20:59:15 +02:00
sr.h
sr_ioctl.c scsi: sr: Do not leak information in ioctl 2022-04-27 14:38:58 +02:00
sr_vendor.c scsi: sr: Don't use GFP_DMA 2022-01-27 11:05:03 +01:00
st.c block: drop unused includes in <linux/genhd.h> 2022-03-16 14:23:46 +01:00
st.h
st_options.h
stex.c
storvsc_drv.c scsi: storvsc: Correct reporting of Hyper-V I/O size limits 2022-06-29 09:03:22 +02:00
sun3_scsi.c
sun3_scsi_vme.c
sun3x_esp.c
sun_esp.c
virtio_scsi.c scsi: virtio_scsi: Fix spelling mistake "Unsupport" -> "Unsupported" 2021-09-28 22:47:28 -04:00
vmw_pvscsi.c scsi: vmw_pvscsi: Set residual data length conditionally 2022-01-05 12:42:39 +01:00
vmw_pvscsi.h scsi: vmw_pvscsi: Expand vcpuHint to 16 bits 2022-06-22 14:21:57 +02:00
wd33c93.c
wd33c93.h
wd719x.c
wd719x.h
xen-scsifront.c xen/scsifront: don't use gnttab_query_foreign_access() for mapped status 2022-03-11 12:22:36 +01:00
zalon.c
zorro7xx.c scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one() 2022-04-13 20:59:15 +02:00
zorro_esp.c