Skip to content
Snippets Groups Projects
Commit 9d177b7f authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging

Fix NFS driver issue.

# -----BEGIN PGP SIGNATURE-----
#
# iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmQ22+MUHHBib256aW5p
# QHJlZGhhdC5jb20ACgkQv/vSX3jHroOYfwgAm3K121ALsF2kDplg+nDA/H69DbCi
# HG0iozJc//MmqF+15dgmClcBn+567U7evSesATv0Bx/UBVN8XtUoS/Krf+QSHd80
# Ycxw1TBgD2Ddc1MmVuYPZetvs8j2a+cYEQIW3ZP5o7Ng88o2BEYiyU1CXA/opfXy
# Lz1lQd3OHK7p00h0uHlqG41XZEuMkj5I6uorqvyDoqVkojtq2agbA7YWEsuiKyzj
# owztvajmh4v0vDSMVuFGr721VIiAm2sFh7JoL69E4EOig47QD3mPPDm8wX48O0dM
# ISKztYKlsSIcGFqpMPsjXioQOiMfp/StfsS1kr6X4B0q4r7UXrpQQ+TMkA==
# =sStc
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 12 Apr 2023 17:27:15 BST
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* tag 'for-upstream' of https://gitlab.com/bonzini/qemu

:
  block/nfs: do not poll within a coroutine

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 77a87a07 3fe64abc
No related branches found
No related tags found
No related merge requests found
...@@ -726,10 +726,8 @@ nfs_get_allocated_file_size_cb(int ret, struct nfs_context *nfs, void *data, ...@@ -726,10 +726,8 @@ nfs_get_allocated_file_size_cb(int ret, struct nfs_context *nfs, void *data,
if (task->ret < 0) { if (task->ret < 0) {
error_report("NFS Error: %s", nfs_get_error(nfs)); error_report("NFS Error: %s", nfs_get_error(nfs));
} }
replay_bh_schedule_oneshot_event(task->client->aio_context,
/* Set task->complete before reading bs->wakeup. */ nfs_co_generic_bh_cb, task);
qatomic_mb_set(&task->complete, 1);
bdrv_wakeup(task->bs);
} }
static int64_t coroutine_fn nfs_co_get_allocated_file_size(BlockDriverState *bs) static int64_t coroutine_fn nfs_co_get_allocated_file_size(BlockDriverState *bs)
...@@ -743,15 +741,19 @@ static int64_t coroutine_fn nfs_co_get_allocated_file_size(BlockDriverState *bs) ...@@ -743,15 +741,19 @@ static int64_t coroutine_fn nfs_co_get_allocated_file_size(BlockDriverState *bs)
return client->st_blocks * 512; return client->st_blocks * 512;
} }
task.bs = bs; nfs_co_init_task(bs, &task);
task.st = &st; task.st = &st;
if (nfs_fstat_async(client->context, client->fh, nfs_get_allocated_file_size_cb, WITH_QEMU_LOCK_GUARD(&client->mutex) {
&task) != 0) { if (nfs_fstat_async(client->context, client->fh, nfs_get_allocated_file_size_cb,
return -ENOMEM; &task) != 0) {
} return -ENOMEM;
}
nfs_set_events(client); nfs_set_events(client);
BDRV_POLL_WHILE(bs, !task.complete); }
while (!task.complete) {
qemu_coroutine_yield();
}
return (task.ret < 0 ? task.ret : st.st_blocks * 512); return (task.ret < 0 ? task.ret : st.st_blocks * 512);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment