v3:
- Patch 1
  - Update qcrypto_tls_session_read() doc to reflect the new retval [Dan]
  - Update commit message to explain the qatomic_read() change [Dan]
- Patch 2 (old)
  - Dropped for now, more at the end

This is v3 of the series.

Fabiano fixed graceful shutdowns for multifd channels previously:

https://lore.kernel.org/qemu-devel/[email protected]/

However we can still see an warning when running preempt unit test on TLS,
even though migration functionality will not be affected:

QTEST_QEMU_BINARY=./qemu-system-x86_64 ./tests/qtest/migration-test --full -r 
/x86_64/migration/postcopy/preempt/tls/psk
...
qemu-kvm: Cannot read from TLS channel: The TLS connection was non-properly 
terminated.
...

It turns out this is because the crypto code only passes the ->shutdown
field into the read function, however that value can change concurrently in
another thread by a concurrent qio_channel_shutdown().

Patch 1 should fix this issue.

Patch 2 is something I found when looking at this problem, there's no known
issues I am aware of with them, however I still think they're logically
flawed, so I post them together here.

Please review, thanks.

============= ABOUT OLD PATCH 2 ===================

I dropped it for now to unblock almost patch 1, because patch 1 will fix a
real warning that can be triggered for not only qtest but also normal tls
postcopy migration.

While I was looking at temporary settings for multifd send iochannels to be
blocking always, I found I cannot explain how migration_tls_channel_end()
currently works, because it writes to the multifd iochannels while the
channels should still be owned (and can be written at the same time?) by
the sender threads.  It sounds like a thread-safety issue, or is it not?

Peter Xu (2):
  io/crypto: Move tls premature termination handling into QIO layer
  migration: Make migration_has_failed() work even for CANCELLING

 include/crypto/tlssession.h | 10 +++-------
 crypto/tlssession.c         |  7 ++-----
 io/channel-tls.c            | 21 +++++++++++++++++++--
 migration/migration.c       |  3 ++-
 4 files changed, 26 insertions(+), 15 deletions(-)

-- 
2.50.1


Reply via email to