HomeFreeBSD

zvol: Remove broken blk-mq optimization

Description

zvol: Remove broken blk-mq optimization

This fix removes a dubious optimization in zfs_uiomove_bvec_rq()
that saved the iterator contents of a rq_for_each_segment(). This
optimization allowed restoring the "saved state" from a previous
rq_for_each_segment() call on the same uio so that you wouldn't
need to iterate though each bvec on every zfs_uiomove_bvec_rq() call.
However, if the kernel is manipulating the requests/bios/bvecs under
the covers between zfs_uiomove_bvec_rq() calls, then it could result
in corruption from using the "saved state". This optimization
results in an unbootable system after installing an OS on a zvol
with blk-mq enabled.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes #15351

Details

Provenance
Tony Hutter <hutter2@llnl.gov>Authored on Oct 23 2023, 9:45 PM
Parents
rG86c3ed40e111: "ARC prefetch metadata accesses:" appears twice in the output.
Branches
Unknown
Tags
Unknown

Event Timeline

Tony Hutter <hutter2@llnl.gov> committed rGe860cb0200a8: zvol: Remove broken blk-mq optimization (authored by Tony Hutter <hutter2@llnl.gov>).Nov 7 2023, 12:47 AM