The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH 0/9] vhost-scsi: log write descriptors for live migration (and two bugfix)
@ 2025-02-07 18:41 Dongli Zhang
  2025-02-07 18:41 ` [PATCH 1/9] vhost: modify vhost_log_write() for broader users Dongli Zhang
                   ` (9 more replies)
  0 siblings, 10 replies; 13+ messages in thread
From: Dongli Zhang @ 2025-02-07 18:41 UTC (permalink / raw)
  To: virtualization, netdev, kvm
  Cc: mst, jasowang, eperezma, michael.christie, pbonzini, stefanha,
	joao.m.martins, joe.jin, si-wei.liu, linux-kernel

The live migration with vhost-scsi has been enabled by QEMU commit
b3e89c941a85 ("vhost-scsi: Allow user to enable migration"), which
thoroughly explains the workflow that QEMU collaborates with vhost-scsi on
the live migration.

Although it logs dirty data for the used ring, it doesn't log any write
descriptor (VRING_DESC_F_WRITE).

In comparison, vhost-net logs write descriptors via vhost_log_write(). The
SPDK (vhost-user-scsi backend) also logs write descriptors via
vhost_log_req_desc().

As a result, there is likely data mismatch between memory and vhost-scsi
disk during the live migration.

1. Suppose there is high workload and high memory usage. Suppose some
systemd userspace pages are swapped out to the swap disk.

2. Upon request from systemd, the kernel reads some pages from the swap
disk to the memory via vhost-scsi.

3. Although those userspace pages' data are updated, they are not marked as
dirty by vhost-scsi (this is the bug). They are not going to migrate to the
target host during memory transfer iterations.

4. Suppose systemd doesn't write to those pages any longer. Those pages
never get the chance to be dirty or migrated any longer.

5. Once the guest VM is resumed on the target host, because of the lack of
those dirty pages' data, the systemd may run into abnormal status, i.e.,
there may be systemd segfault.

Log all write descriptors to fix the issue.

In addition, the patchset also fixes two bugs in vhost-scsi.

Dongli Zhang (log descriptor, suggested by Joao Martins):
  vhost: modify vhost_log_write() for broader users
  vhost-scsi: adjust vhost_scsi_get_desc() to log vring descriptors
  vhost-scsi: cache log buffer in I/O queue vhost_scsi_cmd
  vhost-scsi: log I/O queue write descriptors
  vhost-scsi: log control queue write descriptors
  vhost-scsi: log event queue write descriptors
  vhost: add WARNING if log_num is more than limit

Dongli Zhang (vhost-scsi bugfix):
  vhost-scsi: protect vq->log_used with vq->mutex
  vhost-scsi: Fix vhost_scsi_send_bad_target()

 drivers/vhost/net.c   |   2 +-
 drivers/vhost/scsi.c  | 191 +++++++++++++++++++++++++++++++++++++++------
 drivers/vhost/vhost.c |  46 ++++++++---
 drivers/vhost/vhost.h |   2 +-
 4 files changed, 206 insertions(+), 35 deletions(-)


base-commit: 5c8c229261f14159b54b9a32f12e5fa89d88b905

Thank you very much!

Dongli Zhang


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2025-02-21 18:03 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-07 18:41 [PATCH 0/9] vhost-scsi: log write descriptors for live migration (and two bugfix) Dongli Zhang
2025-02-07 18:41 ` [PATCH 1/9] vhost: modify vhost_log_write() for broader users Dongli Zhang
2025-02-07 18:41 ` [PATCH 2/9] vhost-scsi: adjust vhost_scsi_get_desc() to log vring descriptors Dongli Zhang
2025-02-07 18:41 ` [PATCH 3/9] vhost-scsi: cache log buffer in I/O queue vhost_scsi_cmd Dongli Zhang
2025-02-10 20:11   ` Mike Christie
2025-02-07 18:41 ` [PATCH 4/9] vhost-scsi: log I/O queue write descriptors Dongli Zhang
2025-02-07 18:41 ` [PATCH 5/9] vhost-scsi: log control " Dongli Zhang
2025-02-12  1:08   ` Mike Christie
2025-02-07 18:41 ` [PATCH 6/9] vhost-scsi: log event " Dongli Zhang
2025-02-07 18:41 ` [PATCH 7/9] vhost: add WARNING if log_num is more than limit Dongli Zhang
2025-02-07 18:41 ` [PATCH 8/9] vhost-scsi: protect vq->log_used with vq->mutex Dongli Zhang
2025-02-07 18:41 ` [PATCH 9/9] vhost-scsi: Fix vhost_scsi_send_bad_target() Dongli Zhang
2025-02-21 18:03 ` [PATCH 0/9] vhost-scsi: log write descriptors for live migration (and two bugfix) dongli.zhang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox