Changeset 23703 in vbox
- Timestamp:
- Oct 12, 2009 3:34:36 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 53419
- Location:
- trunk/src/VBox
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
r23689 r23703 397 397 case MachineState_Restoring: 398 398 pszState = "restoring"; 399 break; 400 case MachineState_MigratingFrom: 401 if (details == VMINFO_MACHINEREADABLE) 402 pszState = "migratingfrom"; 403 else 404 pszState = "migrating from"; 399 405 break; 400 406 default: -
trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp
r23643 r23703 605 605 case MachineState_Running: return "Running"; 606 606 case MachineState_Restoring: return "Restoring"; 607 case MachineState_MigratingFrom: return "MigratingFrom"; 607 608 case MachineState_Starting: return "Starting"; 608 609 case MachineState_PoweredOff: return "PoweredOff"; … … 2017 2018 if ( rc == S_OK 2018 2019 && ( machineState == MachineState_Starting 2019 || machineState == MachineState_Restoring)) 2020 || machineState == MachineState_Restoring 2021 || machineState == MachineState_MigratingFrom) 2022 ) 2020 2023 { 2021 2024 /* … … 2111 2114 } while ( rc == S_OK 2112 2115 && ( machineState == MachineState_Starting 2113 || machineState == MachineState_Restoring)); 2116 || machineState == MachineState_Restoring 2117 || machineState == MachineState_MigratingFrom) 2118 ); 2114 2119 2115 2120 /* kill the timer again */ … … 4209 4214 " - Restoring..."); 4210 4215 } 4216 else if (machineState == MachineState_MigratingFrom) 4217 { 4218 ULONG cPercentNow; 4219 HRESULT rc = gProgress->COMGETTER(Percent)(&cPercentNow); 4220 if (SUCCEEDED(rc)) 4221 RTStrPrintf(szTitle + strlen(szTitle), sizeof(szTitle) - strlen(szTitle), 4222 " - Migrating %d%%...", (int)cPercentNow); 4223 else 4224 RTStrPrintf(szTitle + strlen(szTitle), sizeof(szTitle) - strlen(szTitle), 4225 " - Migrating..."); 4226 } 4211 4227 /* ignore other states, we could already be in running or aborted state */ 4212 4228 break; -
trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp
r23643 r23703 4194 4194 mLastState == KMachineState_Paused || 4195 4195 mLastState == KMachineState_Restoring || 4196 mLastState == KMachineState_MigratingFrom || 4196 4197 mLastState == KMachineState_Saving)) 4197 4198 updateDockIcon(); -
trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp
r23643 r23703 2642 2642 mMachineStates [KMachineState_Saving] = tr ("Saving", "MachineState"); 2643 2643 mMachineStates [KMachineState_Restoring] = tr ("Restoring", "MachineState"); 2644 mMachineStates [KMachineState_MigratingFrom] = tr ("Migrating From", "MachineState"); 2644 2645 mMachineStates [KMachineState_Discarding] = tr ("Discarding", "MachineState"); 2645 2646 mMachineStates [KMachineState_SettingUp] = tr ("Setting Up", "MachineState"); … … 4611 4612 {KMachineState_Saving, ":/state_saving_16px.png"}, 4612 4613 {KMachineState_Restoring, ":/state_restoring_16px.png"}, 4614 {KMachineState_MigratingFrom, ":/state_restoring_16px.png"}, /** @todo Live Migration: New icon? (not really important) */ 4613 4615 {KMachineState_Discarding, ":/state_discarding_16px.png"}, 4614 4616 {KMachineState_SettingUp, ":/settings_16px.png"}, … … 4632 4634 mVMStateColors.insert (KMachineState_Saving, new QColor (Qt::green)); 4633 4635 mVMStateColors.insert (KMachineState_Restoring, new QColor (Qt::green)); 4636 mVMStateColors.insert (KMachineState_MigratingFrom, new QColor (Qt::green)); 4634 4637 mVMStateColors.insert (KMachineState_Discarding, new QColor (Qt::green)); 4635 4638 mVMStateColors.insert (KMachineState_SettingUp, new QColor (Qt::green)); -
trunk/src/VBox/Frontends/VirtualBox/src/VBoxMediaManagerDlg.cpp
r23585 r23703 1513 1513 case KMachineState_Starting: 1514 1514 case KMachineState_Restoring: 1515 case KMachineState_MigratingFrom: 1515 1516 { 1516 1517 refreshAll(); -
trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxDockIconPreview.cpp
r18689 r23703 119 119 if (mMainWnd->machineState() == KMachineState_Paused) 120 120 img = mStatePaused; 121 else if (mMainWnd->machineState() == KMachineState_Restoring) 121 else if ( mMainWnd->machineState() == KMachineState_Restoring 122 || mMainWnd->machineState() == KMachineState_MigratingFrom) 122 123 img = mStateRestoring; 123 124 else if (mMainWnd->machineState() == KMachineState_Saving) -
trunk/src/VBox/Main/ConsoleImpl-LiveMigration.cpp
r23698 r23703 174 174 if (RT_FAILURE(rc)) 175 175 { 176 *pszBuf = '\0'; 176 177 LogRel(("Migration: RTTcpRead -> %Rrc while reading string ('%s')\n", rc, pszStart)); 177 178 return rc; … … 179 180 if ( ch == '\n' 180 181 || ch == '\0') 182 { 183 *pszBuf = '\0'; 181 184 return VINF_SUCCESS; 185 } 182 186 if (cchBuf <= 1) 183 187 { 188 *pszBuf = '\0'; 184 189 LogRel(("Migration: String buffer overflow: '%s'\n", pszStart)); 185 190 return VERR_BUFFER_OVERFLOW; 186 191 } 187 192 *pszBuf++ = ch; 188 *pszBuf = '\0';189 193 cchBuf--; 190 194 } … … 197 201 * @returns S_OK on ACK, E_FAIL+setError() on failure or NACK. 198 202 * @param pState The live migration source state. 203 * @param pszWhich Which ACK is this this? 199 204 * @param pszNAckMsg Optional NACK message. 200 205 * … … 202 207 */ 203 208 HRESULT 204 Console::migrationSrcReadACK(MigrationStateSrc *pState, const char *pszNAckMsg /*= NULL*/) 209 Console::migrationSrcReadACK(MigrationStateSrc *pState, const char *pszWhich, 210 const char *pszNAckMsg /*= NULL*/) 205 211 { 206 212 char szMsg[128]; 207 213 int vrc = migrationTcpReadLine(pState, szMsg, sizeof(szMsg)); 208 214 if (RT_FAILURE(vrc)) 209 return setError(E_FAIL, tr("Failed reading ACK : %Rrc"), vrc);215 return setError(E_FAIL, tr("Failed reading ACK(%s): %Rrc"), pszWhich, vrc); 210 216 if (strcmp(szMsg, "ACK")) 211 217 { … … 218 224 if (pszNAckMsg) 219 225 { 220 LogRel(("Migration: NACK=%Rrc (%d)\n", vrc2, vrc2));226 LogRel(("Migration: %s: NACK=%Rrc (%d)\n", pszWhich, vrc2, vrc2)); 221 227 return setError(E_FAIL, pszNAckMsg); 222 228 } 223 return setError(E_FAIL, "NACK - %Rrc (%d)", vrc2, vrc2);229 return setError(E_FAIL, "NACK(%s) - %Rrc (%d)", pszWhich, vrc2, vrc2); 224 230 } 225 231 } 226 return setError(E_FAIL, tr(" Expected ACK or NACK, got '%s'"), szMsg);232 return setError(E_FAIL, tr("%s: Expected ACK or NACK, got '%s'"), pszWhich, szMsg); 227 233 } 228 234 return S_OK; … … 247 253 if (RT_SUCCESS(vrc)) 248 254 vrc = RTTcpWrite(pState->mhSocket, "\n", sizeof("\n") - 1); 255 if (RT_SUCCESS(vrc)) 256 vrc = RTTcpFlush(pState->mhSocket); 249 257 if (RT_FAILURE(vrc)) 250 258 return setError(E_FAIL, tr("Failed writing command '%s': %Rrc"), pszCommand, vrc); 251 return migrationSrcReadACK(pState );259 return migrationSrcReadACK(pState, pszCommand); 252 260 } 253 261 … … 456 464 MIGRATIONTCPHDR EofHdr = { MIGRATIONTCPHDR_MAGIC, 0 }; 457 465 int rc = RTTcpWrite(pState->mhSocket, &EofHdr, sizeof(EofHdr)); 466 if (RT_SUCCESS(rc)) 467 rc = RTTcpFlush(pState->mhSocket); 458 468 if (RT_FAILURE(rc)) 459 469 { … … 546 556 547 557 /* ACK */ 548 hrc = migrationSrcReadACK(pState, tr("Invalid password"));558 hrc = migrationSrcReadACK(pState, "password", tr("Invalid password")); 549 559 if (FAILED(hrc)) 550 560 return hrc; … … 567 577 return setError(E_FAIL, tr("VMR3Migrate -> %Rrc"), vrc); 568 578 569 hrc = migrationSrcReadACK(pState );579 hrc = migrationSrcReadACK(pState, "load-complete"); 570 580 if (FAILED(hrc)) 571 581 return hrc; … … 574 584 * State fun? Automatic power off? 575 585 */ 586 hrc = migrationSrcSubmitCommand(pState, "done"); 587 if (FAILED(hrc)) 588 return hrc; 576 589 577 590 return S_OK; … … 591 604 MigrationStateSrc *pState = (MigrationStateSrc *)pvUser; 592 605 593 HRESULT hrc = pState->mptrConsole->migrationSrc(pState); 606 AutoVMCaller autoVMCaller(pState->mptrConsole); 607 HRESULT hrc = autoVMCaller.rc(); 608 609 if (SUCCEEDED(hrc)) 610 hrc = pState->mptrConsole->migrationSrc(pState); 611 594 612 pState->mptrProgress->notifyComplete(hrc); 595 613 … … 629 647 case VMSTATE_SUSPENDING_EXT_LS: 630 648 pState->mptrConsole->setMachineState(MachineState_Paused); 631 pState->mptrConsole->Resume(); /** @todo somehow make the VMM report back external pause even on error. */ 632 autoLock.unlock(); 649 /** @todo somehow make the VMM report back external pause even on error. */ 650 autoLock.leave(); 651 VMR3Resume(pState->mpVM); 633 652 break; 634 653 } … … 946 965 else 947 966 { 948 LogRel(("Migration: Unknown command '%s'\n", szCmd)); 967 LogRel(("Migration: Unknown command '%s' (%.*Rxs)\n", szCmd, strlen(szCmd), szCmd)); 968 vrc = VERR_NOT_IMPLEMENTED; 969 migrationTcpWriteNACK(pState, vrc); 949 970 break; 950 971 } -
trunk/src/VBox/Main/ConsoleImpl.cpp
r23669 r23703 4730 4730 * any error reporting and appropriate state change! */ 4731 4731 4732 if ( mMachineState == MachineState_Saved 4733 || fLiveMigrationTarget) 4732 if (mMachineState == MachineState_Saved) 4734 4733 setMachineState(MachineState_Restoring); 4734 else if (fLiveMigrationTarget) 4735 setMachineState(MachineState_MigratingFrom); 4735 4736 else 4736 4737 setMachineState(MachineState_Starting); … … 4798 4799 mMachineState == MachineState_Starting || 4799 4800 mMachineState == MachineState_Restoring || 4801 mMachineState == MachineState_MigratingFrom || /** @todo LiveMigration ???*/ 4800 4802 mMachineState == MachineState_Stopping, 4801 4803 ("Invalid machine state: %s\n", Global::stringifyMachineState(mMachineState))); … … 4809 4811 * powerUpThread() is calling us on failure, so the VM is already off at 4810 4812 * that point. */ 4811 if (!mVMPoweredOff && 4812 (mMachineState == MachineState_Starting || 4813 mMachineState == MachineState_Restoring)) 4813 if ( !mVMPoweredOff 4814 && ( mMachineState == MachineState_Starting 4815 || mMachineState == MachineState_Restoring 4816 || mMachineState == MachineState_MigratingFrom) 4817 ) 4814 4818 mVMPoweredOff = true; 4815 4819 … … 4819 4823 * inappropriate operations while leaving the lock below, Saving or 4820 4824 * Restoring should be fine too */ 4821 if (mMachineState != MachineState_Saving && 4822 mMachineState != MachineState_Restoring && 4823 mMachineState != MachineState_Stopping) 4825 if ( mMachineState != MachineState_Saving 4826 && mMachineState != MachineState_Restoring 4827 && mMachineState != MachineState_MigratingFrom 4828 && mMachineState != MachineState_Stopping 4829 ) 4824 4830 setMachineState(MachineState_Stopping); 4825 4831 … … 5504 5510 if ( that->mMachineState != MachineState_Stopping 5505 5511 && that->mMachineState != MachineState_Saving 5506 && that->mMachineState != MachineState_Restoring) 5512 && that->mMachineState != MachineState_Restoring 5513 && that->mMachineState != MachineState_MigratingFrom 5514 ) 5507 5515 { 5508 5516 LogFlowFunc(("VM has powered itself off but Console still thinks it is running. Notifying.\n")); … … 5598 5606 that->setMachineState(MachineState_Saved); 5599 5607 break; 5608 case MachineState_MigratingFrom: 5609 /* Migration failed or was cancelled. Back to powered off. */ 5610 that->setMachineState(MachineState_PoweredOff); 5611 break; 5600 5612 } 5601 5613 break; … … 5635 5647 && aOldState == VMSTATE_POWERING_ON) 5636 5648 || ( ( that->mMachineState == MachineState_Restoring 5649 || that->mMachineState == MachineState_MigratingFrom 5637 5650 || that->mMachineState == MachineState_Paused) 5638 5651 && aOldState == VMSTATE_RESUMING)); … … 6828 6841 catch (HRESULT aRC) { rc = aRC; } 6829 6842 6830 if (console->mMachineState == MachineState_Starting || 6831 console->mMachineState == MachineState_Restoring) 6843 if ( console->mMachineState == MachineState_Starting 6844 || console->mMachineState == MachineState_Restoring 6845 || console->mMachineState == MachineState_MigratingFrom 6846 ) 6832 6847 { 6833 6848 /* We are still in the Starting/Restoring state. This means one of: -
trunk/src/VBox/Main/Global.cpp
r23675 r23703 197 197 case MachineState_Saving: return "Saving"; 198 198 case MachineState_Restoring: return "Restoring"; 199 case MachineState_MigratingFrom:return "MigratingFrom"; 199 200 case MachineState_Discarding: return "Discarding"; 200 201 case MachineState_SettingUp: return "SettingUp"; -
trunk/src/VBox/Main/MachineImpl.cpp
r23697 r23703 6002 6002 6003 6003 if ( mData->mMachineState == MachineState_Saved 6004 #ifdef VBOX_WITH_LIVE_MIGRATION /** @todo fix this properly... a new state for indicating migration? */6005 || ( mData->mMachineState == MachineState_Restoring6006 && !mSSData->mStateFilePath.isEmpty() )6007 #else6008 6004 || mData->mMachineState == MachineState_Restoring 6009 #endif6010 6005 ) 6011 6006 { … … 9274 9269 case MachineState_Starting: 9275 9270 case MachineState_Restoring: 9271 case MachineState_MigratingFrom: 9276 9272 case MachineState_Paused: 9277 9273 case MachineState_Running: … … 10147 10143 AutoWriteLock alock(this); 10148 10144 10149 AssertReturn(mData->mMachineState == MachineState_Starting || 10150 mData->mMachineState == MachineState_Restoring, E_FAIL); 10145 AssertReturn( mData->mMachineState == MachineState_Starting 10146 || mData->mMachineState == MachineState_Restoring 10147 || mData->mMachineState == MachineState_MigratingFrom, E_FAIL); 10151 10148 10152 10149 typedef std::list <ComPtr<IMedium> > MediaList; … … 10333 10330 /* detect some state transitions */ 10334 10331 10335 if ((oldMachineState == MachineState_Saved && 10336 aMachineState == MachineState_Restoring) || 10337 (oldMachineState < MachineState_Running /* any other OFF state */ && 10338 aMachineState == MachineState_Starting)) 10332 if ( ( oldMachineState == MachineState_Saved 10333 && aMachineState == MachineState_Restoring) 10334 || ( oldMachineState == MachineState_PoweredOff 10335 && aMachineState == MachineState_MigratingFrom) 10336 || ( oldMachineState < MachineState_Running /* any other OFF state */ 10337 && aMachineState == MachineState_Starting) 10338 ) 10339 10339 { 10340 10340 /* The EMT thread is about to start */ … … 10345 10345 /// change anything when in the Starting/Restoring state 10346 10346 } 10347 else 10348 if (oldMachineState >= MachineState_Running &&10349 oldMachineState != MachineState_Discarding &&10350 oldMachineState != MachineState_SettingUp &&10351 aMachineState < MachineState_Running &&10352 /* ignore PoweredOff->Saving->PoweredOff transition when taking a10353 * snapshot */10354 (mSnapshotData.mSnapshot.isNull() ||10355 mSnapshotData.mLastState >= MachineState_Running))10347 else if ( oldMachineState >= MachineState_Running 10348 && oldMachineState != MachineState_Discarding 10349 && oldMachineState != MachineState_SettingUp 10350 && aMachineState < MachineState_Running 10351 /* ignore PoweredOff->Saving->PoweredOff transition when taking a 10352 * snapshot */ 10353 && ( mSnapshotData.mSnapshot.isNull() 10354 || mSnapshotData.mLastState >= MachineState_Running) 10355 ) 10356 10356 { 10357 10357 /* The EMT thread has just stopped, unlock attached media. Note that as … … 10377 10377 } 10378 10378 } 10379 else 10380 if (oldMachineState == MachineState_Saved &&10381 (aMachineState == MachineState_PoweredOff ||10382 aMachineState == MachineState_Aborted))10379 else if ( oldMachineState == MachineState_Saved 10380 && ( aMachineState == MachineState_PoweredOff 10381 || aMachineState == MachineState_Aborted) 10382 ) 10383 10383 { 10384 10384 /* … … 10403 10403 } 10404 10404 10405 if (aMachineState == MachineState_Starting || 10406 aMachineState == MachineState_Restoring) 10405 if ( aMachineState == MachineState_Starting 10406 || aMachineState == MachineState_Restoring 10407 || aMachineState == MachineState_MigratingFrom 10408 ) 10407 10409 { 10408 10410 /* set the current state modified flag to indicate that the current … … 10416 10418 } 10417 10419 10418 #ifdef VBOX_WITH_LIVE_MIGRATION /** @todo fix this properly... a new state for indicating migration? */10419 if ( deleteSavedState10420 && !mSSData->mStateFilePath.isNull())10421 #else10422 10420 if (deleteSavedState) 10423 #endif10424 10421 { 10425 10422 if (mRemoveSavedState) -
trunk/src/VBox/Main/cbinding/tstXPCOMCCall.c
r23330 r23703 84 84 case MachineState_Saving: return "Saving"; 85 85 case MachineState_Restoring: return "Restoring"; 86 case MachineState_MigratingFrom: return "MigratingFrom"; 86 87 case MachineState_Discarding: return "Discarding"; 87 88 case MachineState_SettingUp: return "SettingUp"; -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r23702 r23703 473 473 <enum 474 474 name="MachineState" 475 uuid=" 73bf04d0-7c4f-4684-9abf-d65a9ad74343"475 uuid="f532545d-9ae7-4402-8b5f-1ea7d778cfc7" 476 476 > 477 477 <desc> … … 673 673 </desc> 674 674 </const> 675 <const name="Discarding" value="11"> 675 <const name="MigratingFrom" value="11"> 676 <desc> 677 Migrating the machine state from another host or process. 678 </desc> 679 </const> 680 <const name="Discarding" value="12"> 676 681 <desc> 677 682 Snapshot of the machine is being discarded. 678 683 </desc> 679 684 </const> 680 <const name="SettingUp" value="1 2">685 <const name="SettingUp" value="13"> 681 686 <desc> 682 687 Lengthy setup operation is in progress. … … 689 694 </desc> 690 695 </const> 691 <const name="LastOnline" value="1 0" wsmap="suppress"> <!-- Restoring -->696 <const name="LastOnline" value="11" wsmap="suppress"> <!-- Restoring --> 692 697 <desc> 693 698 Pseudo-state: last online state (for use in relational expressions). … … 700 705 </desc> 701 706 </const> 702 <const name="LastTransient" value="1 2" wsmap="suppress"> <!-- SettingUp -->707 <const name="LastTransient" value="13" wsmap="suppress"> <!-- SettingUp --> 703 708 <desc> 704 709 Pseudo-state: last transient state (for use in relational expressions). -
trunk/src/VBox/Main/include/ConsoleImpl.h
r23669 r23703 518 518 static DECLCALLBACK(int) migrationSrcThreadWrapper(RTTHREAD hThread, void *pvUser); 519 519 HRESULT migrationSrc(MigrationStateSrc *pState); 520 HRESULT migrationSrcReadACK(MigrationStateSrc *pState, const char *psz NAckMsg = NULL);520 HRESULT migrationSrcReadACK(MigrationStateSrc *pState, const char *pszWhich, const char *pszNAckMsg = NULL); 521 521 HRESULT migrationSrcSubmitCommand(MigrationStateSrc *pState, const char *pszCommand); 522 522 int migrationDst(PVM pVM, IMachine *pMachine, bool fStartPaused, void *pvVMCallbackTask);
Note:
See TracChangeset
for help on using the changeset viewer.