Am 14.04.2025 um 22:12 hat Stefan Hajnoczi geschrieben: > When guests send misaligned discard requests, the block layer breaks > them up into a misaligned head, an aligned main body, and a misaligned > tail. > > The file-posix block driver on Linux returns -EINVAL on misaligned > discard requests. This causes bdrv_co_pdiscard() to fail and guests > configured with werror=stop will pause. > > Add a special case for misaligned head/tail requests. Simply continue > when EINVAL is encountered so that the aligned main body of the request > can be completed and the guest is not paused. This is the best we can do > when guest discard limits do not match the host discard limits. > > Fixes: https://issues.redhat.com/browse/RHEL-86032 > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > Reviewed-by: Hanna Czenczek <hre...@redhat.com>
It would be good to also update the comment a bit further up: /* Discard is advisory, but some devices track and coalesce * unaligned requests, so we must pass everything down rather than * round here. Still, most devices will just silently ignore * unaligned requests (by returning -ENOTSUP), so we must fragment * the request accordingly. */ I'm not sure where the -ENOTSUP came from (Eric, do you remember?), but we should at least mention this -EINVAL case separately. Kevin