Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 66540)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 66541)
@@ -692,4 +692,5 @@
                                 KStorageBus aBusType, KStorageControllerType aControllerType)
     : AbstractItem (aParent)
+    , mOldCtrName (aName)
     , mCtrName (aName)
     , mCtrType (0)
@@ -743,4 +744,9 @@
 {
     return mCtrType->busType();
+}
+
+QString ControllerItem::oldCtrName() const
+{
+    return mOldCtrName;
 }
 
@@ -1403,4 +1409,11 @@
         }
 
+        case R_CtrOldName:
+        {
+            if (AbstractItem *item = static_cast <AbstractItem*> (aIndex.internalPointer()))
+                if (item->rtti() == AbstractItem::Type_ControllerItem)
+                    return static_cast <ControllerItem*> (item)->oldCtrName();
+            return QString();
+        }
         case R_CtrName:
         {
@@ -2181,6 +2194,7 @@
     for (int iControllerIndex = 0; iControllerIndex < controllers.size(); ++iControllerIndex)
     {
-        /* Prepare old controller data: */
+        /* Prepare old controller data & cache key: */
         UIDataSettingsMachineStorageController oldControllerData;
+        QString strControllerKey = QString::number(iControllerIndex);
 
         /* Check whether controller is valid: */
@@ -2194,4 +2208,6 @@
             oldControllerData.m_uPortCount = comController.GetPortCount();
             oldControllerData.m_fUseHostIOCache = comController.GetUseHostIOCache();
+            /* Override controller cache key: */
+            strControllerKey = oldControllerData.m_strControllerName;
 
             /* Sort attachments before caching/fetching: */
@@ -2210,6 +2226,7 @@
             for (int iAttachmentIndex = 0; iAttachmentIndex < attachments.size(); ++iAttachmentIndex)
             {
-                /* Prepare old attachment data: */
+                /* Prepare old attachment data & cache key: */
                 UIDataSettingsMachineStorageAttachment oldAttachmentData;
+                QString strAttachmentKey = QString::number(iAttachmentIndex);
 
                 /* Check whether attachment is valid: */
@@ -2227,13 +2244,15 @@
                     const CMedium comMedium = comAttachment.GetMedium();
                     oldAttachmentData.m_strAttachmentMediumId = comMedium.isNull() ? UIMedium::nullID() : comMedium.GetId();
+                    /* Override controller cache key: */
+                    strAttachmentKey = QString("%1:%2").arg(oldAttachmentData.m_iAttachmentPort).arg(oldAttachmentData.m_iAttachmentDevice);
                 }
 
                 /* Cache old attachment data: */
-                m_pCache->child(iControllerIndex).child(iAttachmentIndex).cacheInitialData(oldAttachmentData);
+                m_pCache->child(strControllerKey).child(strAttachmentKey).cacheInitialData(oldAttachmentData);
             }
         }
 
         /* Cache old controller data: */
-        m_pCache->child(iControllerIndex).cacheInitialData(oldControllerData);
+        m_pCache->child(strControllerKey).cacheInitialData(oldControllerData);
     }
 
@@ -2318,5 +2337,5 @@
         UIDataSettingsMachineStorageController newControllerData;
 
-        /* Gather new controller data from model: */
+        /* Gather new controller data & cache key from model: */
         const QModelIndex controllerIndex = m_pModelStorage->index(iControllerIndex, 0, rootIndex);
         newControllerData.m_strControllerName = m_pModelStorage->data(controllerIndex, StorageModel::R_CtrName).toString();
@@ -2325,4 +2344,5 @@
         newControllerData.m_uPortCount = m_pModelStorage->data(controllerIndex, StorageModel::R_CtrPortCount).toUInt();
         newControllerData.m_fUseHostIOCache = m_pModelStorage->data(controllerIndex, StorageModel::R_CtrIoCache).toBool();
+        const QString strControllerKey = m_pModelStorage->data(controllerIndex, StorageModel::R_CtrOldName).toString();
 
         /* For each attachment: */
@@ -2332,5 +2352,5 @@
             UIDataSettingsMachineStorageAttachment newAttachmentData;
 
-            /* Gather new controller data from model: */
+            /* Gather new attachment data & cache key from model: */
             const QModelIndex attachmentIndex = m_pModelStorage->index(iAttachmentIndex, 0, controllerIndex);
             newAttachmentData.m_attachmentType = m_pModelStorage->data(attachmentIndex, StorageModel::R_AttDevice).value<KDeviceType>();
@@ -2343,11 +2363,12 @@
             newAttachmentData.m_fAttachmentHotPluggable = m_pModelStorage->data(attachmentIndex, StorageModel::R_AttIsHotPluggable).toBool();
             newAttachmentData.m_strAttachmentMediumId = m_pModelStorage->data(attachmentIndex, StorageModel::R_AttMediumId).toString();
+            const QString strAttachmentKey = QString("%1:%2").arg(newAttachmentData.m_iAttachmentPort).arg(newAttachmentData.m_iAttachmentDevice);
 
             /* Cache new attachment data: */
-            m_pCache->child(iControllerIndex).child(iAttachmentIndex).cacheCurrentData(newAttachmentData);
+            m_pCache->child(strControllerKey).child(strAttachmentKey).cacheCurrentData(newAttachmentData);
         }
 
         /* Cache new controller data: */
-        m_pCache->child(iControllerIndex).cacheCurrentData(newControllerData);
+        m_pCache->child(strControllerKey).cacheCurrentData(newControllerData);
     }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h	(revision 66540)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h	(revision 66541)
@@ -330,4 +330,5 @@
 
     KStorageBus ctrBusType() const;
+    QString oldCtrName() const;
     QString ctrName() const;
     KStorageControllerType ctrType() const;
@@ -361,4 +362,5 @@
     void delChild (AbstractItem *aItem);
 
+    QString mOldCtrName;
     QString mCtrName;
     AbstractControllerType *mCtrType;
@@ -468,4 +470,5 @@
         R_IsMoreAttachmentsPossible,
 
+        R_CtrOldName,
         R_CtrName,
         R_CtrType,
