<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>All,</p>
    <p>    Currently the "virsh save" command opens a file to save a
      domain's XML and memory state, does the save, and then re-opens
      the file to simulate seeking to the beginning to update the header
      to indicate that the file is complete.</p>
    <p>For pipes this is not possible, attempting to re-open the pipe
      will not connect you to the same consumer.  Seeking is also not
      possible on a pipe.</p>
    <p>Attached is a patch that detects if the file being written to is
      not seekable, and if so writes the completed header initially,
      then writes the normal data, and avoids re-opening the file.</p>
    <p>This is useful to me for saving a VM state directly to Ceph RBD
      images without having an intermediate file.<br>
    </p>
    <p>I've tested this patch successfully (against v1.3.5) for both
      saving and restoring a domain:</p>
    <p><tt># <b>( fifo="$(mktemp -u)"; mkfifo "${fifo}" &&
          virsh save one-0 "${fifo}" & cat "${fifo}" | rbd import -
          rbd/test1234 & wait; rm -f "${fifo}" )</b></tt><tt><br>
      </tt><tt><br>
      </tt><tt>Domain one-0 saved to /tmp/tmp.HK4hChiQqB</tt><tt><br>
      </tt><tt><br>
      </tt><tt># </tt><tt><br>
      </tt></p>
    <tt># <b>( fifo="$(mktemp -u)"; mkfifo "${fifo}" && rbd
        export rbd/test1234 - > "${fifo}" & virsh restore
        "${fifo}" & wait; rm -f "${fifo}" ) </b>                                                                                                                                                                 
    </tt><tt><br>
    </tt><tt>Exporting image: 100% complete...done.</tt><tt><br>
    </tt><tt>Domain restored from /tmp/tmp.0YaUZ5Y2yT</tt><tt><br>
    </tt><tt><br>
    </tt><tt># <b>virsh list</b></tt><tt><br>
    </tt><tt> Id    Name                           State</tt><tt><br>
    </tt><tt>----------------------------------------------------</tt><tt><br>
    </tt><tt> 11    one-0                          running</tt><tt><br>
    </tt><tt>#</tt><br>
    <pre class="moz-signature" cols="72">-- 
        Roy Keene
        Knight Point Systems, LLC
        Service-Disabled Veteran-Owned Business
        1775 Wiehle Avenue Suite 101 | Reston, VA 20190
        c: 813-956-3808    f: 571-266-3106
        <a class="moz-txt-link-abbreviated" href="http://www.knightpoint.com">www.knightpoint.com</a> 
        DHS EAGLE II Prime Contractor: FC1 SDVOSB Track
        GSA Schedule 70 SDVOSB: GS-35F-0646S
        GSA MOBIS Schedule: GS-10F-0404Y
        ISO 20000 / ISO 27001

        Notice: This e-mail message, including any attachments, is for the 
        sole use of the intended recipient(s) and may contain confidential 
        and privileged information.  Any unauthorized review,  copy,  use, 
        disclosure, or distribution is STRICTLY prohibited. If you are not 
        the intended recipient,  please contact the sender by reply e-mail
        and destroy all copies of the original message.</pre>
  </body>
</html>