Block layer patches

- Fix hang after request padding error (Windows + 512-on-4k emulation)
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAmEJVUoRHGt3b2xmQHJl
 ZGhhdC5jb20ACgkQfwmycsiPL9bTtw//bab1AYur6kTf9verEcdiUo9/9rfxKoz/
 Lf+W2MLEF/hYkXuGSuHRM/8/y7CHY34IDf/EeizNIfJo2zT29jY1kvUGzbFsCu04
 9R6RxnYnjULtDidtJc5FW9Hcx/nU+ymzXcc66MIOy0HcY/2ED4CbabP+SKEgEC9R
 tzFYqSjQRnSJCYD5q2siL9l4je0Of7pTw6glzxtA3l57T0HTffXuV1JHmiFstB/7
 QFYEyYXg/f/hLdvc5GlTmoS4q2Rcu0WvhZtoui3lLRedeu4FBYx5XLsZ5Ni4BT3j
 qde0Fn/rcRfwUvuS3WiWGV7ptSMPsro0/o6DKczFeQ1bF2o7kPBq0V44xLE3UW6W
 ZQszdD7d/DAYUucuxeWt9QDmkq24JGknjOWHxeaPu1hlO3+oG0QRckTLk6h3hz/a
 h20FlBLt59z/JGOTnHI/PDjMt69drIR/IOuJUeD25blRlgIqXJTdBPRfdx3GxD/M
 n6/YBAEoGxMl5TjrCu3HDwJxVQ2mihkjeruUynx/qoMHyRsxvZNcnP4V+t6PQiMe
 Iyrl8LbbGI5mTww+AcbEJVXU+5Sro4HlB9VrHD8VmxGhENGrKiPzfVEbdNPEKDtZ
 ToZgBkB5HYnPGaVmFjWVg0vyy3iInIj4ZagKR9iFCH3OKcz9moCe2tFzfJ7nXtJ3
 waeT1U/76Vo=
 =s3q9
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches

- Fix hang after request padding error (Windows + 512-on-4k emulation)

# gpg: Signature made Tue 03 Aug 2021 15:40:10 BST
# gpg:                using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6
# gpg:                issuer "kwolf@redhat.com"
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream:
  block: Fix in_flight leak in request padding error path

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2021-08-04 09:27:24 +01:00
commit ef6607edf0
1 changed files with 4 additions and 3 deletions

View File

@ -1841,7 +1841,7 @@ int coroutine_fn bdrv_co_preadv_part(BdrvChild *child,
ret = bdrv_pad_request(bs, &qiov, &qiov_offset, &offset, &bytes, &pad,
NULL);
if (ret < 0) {
return ret;
goto fail;
}
tracked_request_begin(&req, bs, offset, bytes, BDRV_TRACKED_READ);
@ -1849,10 +1849,11 @@ int coroutine_fn bdrv_co_preadv_part(BdrvChild *child,
bs->bl.request_alignment,
qiov, qiov_offset, flags);
tracked_request_end(&req);
bdrv_dec_in_flight(bs);
bdrv_padding_destroy(&pad);
fail:
bdrv_dec_in_flight(bs);
return ret;
}