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 [email protected] +1-801-349-2682
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
