Commit eec2d0c16d for qemu.org

commit eec2d0c16d4a2541a14f5a1867812a508ba7b95e
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date:   Wed Oct 14 10:28:47 2026 -0400

    scsi: document PR_HELPER_CLEANUP command

    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Link: https://lore.kernel.org/r/20261014142847.1354701-1-stefanha@redhat.com
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

diff --git a/docs/interop/pr-helper.rst b/docs/interop/pr-helper.rst
index e926f0a6c9..8ea83dd3d7 100644
--- a/docs/interop/pr-helper.rst
+++ b/docs/interop/pr-helper.rst
@@ -54,7 +54,8 @@ together with the SCSI CDB using ancillary data.
 The CDB has the following limitations:

 - the command (stored in the first byte) must be one of 0x5E
-  (PERSISTENT RESERVE IN) or 0x5F (PERSISTENT RESERVE OUT).
+  (PERSISTENT RESERVE IN), 0x5F (PERSISTENT RESERVE OUT), or 0xFF (PR HELPER
+  CLEANUP, see below).

 - the allocation length (stored in bytes 7-8 of the CDB for PERSISTENT
   RESERVE IN) or parameter list length (stored in bytes 5-8 of the CDB
@@ -63,6 +64,19 @@ The CDB has the following limitations:
 For PERSISTENT RESERVE OUT, the parameter list is sent right after the
 CDB.  The length of the parameter list is taken from the CDB itself.

+The PR HELPER CLEANUP command is a vendor-specific command without a parameter
+list that has the following effect on Linux device-mapper multipath devices and
+otherwise has no effect. This command is intended for cleaning up the multipath
+device on the source host after live migration has completed successfully:
+
+1. Sends "unsetprkey map <dm-target>" to multipathd.
+
+2. Sends "unsetprstatus map <dm-target>" to multipathd.
+
+3. Performs PERSISTENT RESERVE OUT with the REGISTER AND IGNORE EXISTING KEY
+   service action containing zero values for the RESERVATION KEY and SERVICE
+   ACTION RESERVATION KEY.
+
 The helper's reply has the following structure:

 - 4 bytes for the SCSI status