
On 01/23/2011 07:20 PM, Wen Congyang wrote: s/mig/migration/ in the subject line, so that the log is a bit more legible
+static void +print_job_progress(unsigned long long remaining, unsigned long long total) +{ + int progress; + + if (total == 0) + /* migration has not been started */ + return; + + if (remaining == 0) { + /* migration has completed */ + progress = 100; + } else if (remaining * 100 / total == 0) {
Is overflow a risk here, or will total never exceed UINT64_MAX/100?
+ /* migration has not completed, do not print [100 %] */ + progress = 99; + } else { + progress = 100 - remaining * 100 / total; + } + + fprintf(stderr, "\rMigration: [%3d %%]", progress);
Are we guaranteed that this function always gets called with a 100% total as the last thing to be printed? Or if you have a really fast migration, can the thread that calls this leave output stuck at 99% because things completed between the last output and when the monitor thread goes away?
+} + static int cmdMigrate (vshControl *ctl, const vshCmd *cmd) { @@ -3524,6 +3547,9 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd) char retchar; struct sigaction sig_action; struct sigaction old_sig_action; + virDomainJobInfo jobinfo; + bool verbose = FALSE;
s/FALSE/false/
+ sigset_t sigmask, oldsigmask;
struct { vshControl *ctl; @@ -3534,6 +3560,9 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain (ctl, cmd, NULL))) return FALSE;
+ if (vshCommandOptBool (cmd, "verbose")) + verbose = TRUE;
s/TRUE/true/
+ while (1) {
+ if (ret < 0) { + if (errno == EINTR && intCatched) {
s/intCatched/intCaught/ from patch 1, and I'm still not sure that you are properly handling EINTR when your flag reports that no SIGINT was caught.
+++ b/tools/virsh.pod @@ -489,7 +489,8 @@ type attribute for the <domain> element of XML.
=item B<migrate> optional I<--live> I<--p2p> I<--direct> I<--tunnelled> I<--persistent> I<--undefinesource> I<--suspend> I<--copy-storage-all> -I<--copy-storage-inc> I<domain-id> I<desturi> I<migrateuri> I<dname> +I<--copy-storage-inc> I<--verbose> I<domain-id> I<desturi> I<migrateuri> +I<dname>
Thanks for the doc update! Too many patches forget that. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org