VirtualBox

Changeset 78513 in vbox


Ignore:
Timestamp:
May 14, 2019 3:31:04 PM (5 years ago)
Author:
vboxsync
Message:

FE/Qt: Add support for virtio-scsi storage controller to the GUI (bugref:9440)

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp

    r77648 r78513  
    579579        case KStorageBus_USB:    return QApplication::translate("VBoxGlobal", "USB", "StorageBus");
    580580        case KStorageBus_PCIe:   return QApplication::translate("VBoxGlobal", "PCIe", "StorageBus");
     581        case KStorageBus_VirtioSCSI: return QApplication::translate("VBoxGlobal", "virtio-scsi", "StorageBus");
    581582        default: AssertMsgFailed(("No text for %d", bus)); break;
    582583    }
     
    599600        case KStorageControllerType_USB:         return QApplication::translate("VBoxGlobal", "USB", "StorageControllerType");
    600601        case KStorageControllerType_NVMe:        return QApplication::translate("VBoxGlobal", "NVMe", "StorageControllerType");
     602        case KStorageControllerType_VirtioSCSI:  return QApplication::translate("VBoxGlobal", "virtio-scsi", "StorageControllerType");
    601603        default: AssertMsgFailed(("No text for %d", type)); break;
    602604    }
     
    618620    list.insert(QApplication::translate("VBoxGlobal", "USB", "StorageControllerType"),          KStorageControllerType_USB);
    619621    list.insert(QApplication::translate("VBoxGlobal", "NVMe", "StorageControllerType"),         KStorageControllerType_NVMe);
     622    list.insert(QApplication::translate("VBoxGlobal", "virtio-scsi", "StorageControllerType"),  KStorageControllerType_VirtioSCSI);
    620623    if (!list.contains(strType))
    621624    {
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp

    r78499 r78513  
    245245            break;
    246246        }
     247        case KStorageBus_VirtioSCSI:
     248        {
     249            int iMaxPort = vboxGlobal().virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus(storageSlot.bus);
     250            if (storageSlot.port < 0 || storageSlot.port > iMaxPort)
     251            {
     252                AssertMsgFailed(("No text for bus=%d & port=%d", storageSlot.bus, storageSlot.port));
     253                break;
     254            }
     255            if (storageSlot.device != 0)
     256            {
     257                AssertMsgFailed(("No text for bus=%d & port=%d & device=%d", storageSlot.bus, storageSlot.port, storageSlot.device));
     258                break;
     259            }
     260            strResult = QApplication::translate("VBoxGlobal", "virtio-scsi Port %1", "StorageSlot").arg(storageSlot.port);
     261            break;
     262        }
    247263        default:
    248264        {
     
    267283    list[7] = QApplication::translate("VBoxGlobal", "Floppy Device %1", "StorageSlot");
    268284    list[8] = QApplication::translate("VBoxGlobal", "USB Port %1", "StorageSlot");
     285    list[9] = QApplication::translate("VBoxGlobal", "NVMe Port %1", "StorageSlot");
     286    list[10] = QApplication::translate("VBoxGlobal", "virtio-scsi Port %1", "StorageSlot");
    269287    int index = -1;
    270288    QRegExp regExp;
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp

    r78502 r78513  
    323323    m_names.insert(NVMeControllerExpand,     ":/ide_expand_16px.png");
    324324    m_names.insert(NVMeControllerCollapse,   ":/ide_collapse_16px.png");
     325    m_names.insert(VirtioSCSIControllerNormal, ":/scsi_16px.png");
     326    m_names.insert(VirtioSCSIControllerExpand, ":/scsi_expand_16px.png");
     327    m_names.insert(VirtioSCSIControllerCollapse, ":/scsi_collapse_16px.png");
    325328    m_names.insert(FloppyControllerNormal,   ":/floppy_16px.png");
    326329    m_names.insert(FloppyControllerExpand,   ":/floppy_expand_16px.png");
     
    337340    m_names.insert(NVMeControllerAddEn,      ":/ide_add_16px.png");
    338341    m_names.insert(NVMeControllerAddDis,     ":/ide_add_disabled_16px.png");
     342    m_names.insert(VirtioSCSIControllerAddEn, ":/scsi_add_16px.png");
     343    m_names.insert(VirtioSCSIControllerAddDis, ":/scsi_add_disabled_16px.png");
    339344    m_names.insert(FloppyControllerAddEn,    ":/floppy_add_16px.png");
    340345    m_names.insert(FloppyControllerAddDis,   ":/floppy_add_disabled_16px.png");
     
    402407                mPixmaps [i] = (PixmapType)(NVMeControllerNormal + i);
    403408                break;
     409            case KStorageBus_VirtioSCSI:
     410                mPixmaps [i] = (PixmapType)(VirtioSCSIControllerNormal + i);
     411                break;
    404412            default:
    405413                break;
     
    470478        default:                 AssertFailedReturn(0);
    471479    }
     480}
     481
     482
     483/* virtio-scsi Controller Type */
     484VirtioSCSIStorageControllerType::VirtioSCSIStorageControllerType (KStorageControllerType aSubType)
     485    : AbstractControllerType (KStorageBus_VirtioSCSI, aSubType)
     486{
     487}
     488
     489KStorageControllerType VirtioSCSIStorageControllerType::first() const
     490{
     491    return KStorageControllerType_VirtioSCSI;
     492}
     493
     494uint VirtioSCSIStorageControllerType::size() const
     495{
     496    return 1;
    472497}
    473498
     
    633658        case KStorageBus_PCIe:
    634659            mCtrType = new AbstractControllerType(KStorageBus_PCIe, aControllerType);
     660            break;
     661        case KStorageBus_VirtioSCSI:
     662            mCtrType = new VirtioSCSIStorageControllerType (aControllerType);
    635663            break;
    636664
     
    12801308                   (static_cast<RootItem*>(mRootItem)->childCount(KStorageBus_PCIe) <
    12811309                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_PCIe));
     1310        }
     1311        case R_IsMoreVirtioSCSIControllersPossible:
     1312        {
     1313            return (m_configurationAccessLevel == ConfigurationAccessLevel_Full) &&
     1314                   (static_cast<RootItem*>(mRootItem)->childCount(KStorageBus_VirtioSCSI) <
     1315                    vboxGlobal().virtualBox().GetSystemProperties().GetMaxInstancesOfStorageBus(chipsetType(), KStorageBus_VirtioSCSI));
    12821316        }
    12831317        case R_IsMoreAttachmentsPossible:
     
    20472081    : m_pModelStorage(0)
    20482082    , m_pActionAddController(0), m_pActionRemoveController(0)
    2049     , m_pActionAddControllerIDE(0), m_pActionAddControllerSATA(0), m_pActionAddControllerSCSI(0), m_pActionAddControllerSAS(0), m_pActionAddControllerFloppy(0), m_pActionAddControllerUSB(0), m_pActionAddControllerNVMe(0)
     2083    , m_pActionAddControllerIDE(0), m_pActionAddControllerSATA(0), m_pActionAddControllerSCSI(0), m_pActionAddControllerSAS(0), m_pActionAddControllerFloppy(0), m_pActionAddControllerUSB(0), m_pActionAddControllerNVMe(0), m_pActionAddControllerVirtioSCSI(0)
    20502084    , m_pActionAddAttachment(0), m_pActionRemoveAttachment(0)
    20512085    , m_pActionAddAttachmentHD(0), m_pActionAddAttachmentCD(0), m_pActionAddAttachmentFD(0)
     
    24262460    m_pActionAddControllerUSB->setText(tr("Add USB Controller"));
    24272461    m_pActionAddControllerNVMe->setText(tr("Add NVMe Controller"));
     2462    m_pActionAddControllerVirtioSCSI->setText(tr("Add virtio-scsi Controller"));
    24282463    m_pActionRemoveController->setText(tr("Remove Controller"));
    24292464    m_pActionAddAttachment->setText(tr("Add Attachment"));
     
    25872622    menu.addAction(m_pActionAddControllerUSB);
    25882623    menu.addAction(m_pActionAddControllerNVMe);
     2624    menu.addAction(m_pActionAddControllerVirtioSCSI);
    25892625    menu.exec(QCursor::pos());
    25902626}
     
    26232659{
    26242660    addControllerWrapper(generateUniqueControllerName("NVMe"), KStorageBus_PCIe, KStorageControllerType_NVMe);
     2661}
     2662
     2663void UIMachineSettingsStorage::sltAddControllerVirtioSCSI()
     2664{
     2665    addControllerWrapper(generateUniqueControllerName("VirtIO"), KStorageBus_VirtioSCSI, KStorageControllerType_VirtioSCSI);
    26252666}
    26262667
     
    30643105    const bool fUSBPossible = m_pModelStorage->data(index, StorageModel::R_IsMoreUSBControllersPossible).toBool();
    30653106    const bool fNVMePossible = m_pModelStorage->data(index, StorageModel::R_IsMoreNVMeControllersPossible).toBool();
     3107    const bool fVirtioSCSIPossible = m_pModelStorage->data(index, StorageModel::R_IsMoreVirtioSCSIControllersPossible).toBool();
    30663108
    30673109    const bool fController = m_pModelStorage->data(index, StorageModel::R_IsController).toBool();
     
    30713113
    30723114    /* Configure "add controller" actions: */
    3073     m_pActionAddController->setEnabled(fIDEPossible || fSATAPossible || fSCSIPossible || fFloppyPossible || fSASPossible || fUSBPossible || fNVMePossible);
     3115    m_pActionAddController->setEnabled(fIDEPossible || fSATAPossible || fSCSIPossible || fFloppyPossible || fSASPossible || fUSBPossible || fNVMePossible || fVirtioSCSIPossible);
    30743116    m_pActionAddControllerIDE->setEnabled(fIDEPossible);
    30753117    m_pActionAddControllerSATA->setEnabled(fSATAPossible);
     
    30793121    m_pActionAddControllerUSB->setEnabled(fUSBPossible);
    30803122    m_pActionAddControllerNVMe->setEnabled(fNVMePossible);
     3123    m_pActionAddControllerVirtioSCSI->setEnabled(fVirtioSCSIPossible);
    30813124
    30823125    /* Configure "add attachment" actions: */
     
    35093552        }
    35103553
     3554        /* Create 'Add virtio-scsi Controller' action: */
     3555        m_pActionAddControllerVirtioSCSI = new QAction(this);
     3556        AssertPtrReturnVoid(m_pActionAddControllerVirtioSCSI);
     3557        {
     3558            /* Configure action: */
     3559            m_pActionAddControllerVirtioSCSI->setIcon(iconPool()->icon(VirtioSCSIControllerAddEn, VirtioSCSIControllerAddDis));
     3560        }
     3561
    35113562        /* Create 'Remove Controller' action: */
    35123563        m_pActionRemoveController = new QAction(this);
     
    36453696    connect(m_pActionAddControllerUSB, SIGNAL(triggered(bool)), this, SLOT(sltAddControllerUSB()));
    36463697    connect(m_pActionAddControllerNVMe, SIGNAL(triggered(bool)), this, SLOT(sltAddControllerNVMe()));
     3698    connect(m_pActionAddControllerVirtioSCSI, SIGNAL(triggered(bool)), this, SLOT(sltAddControllerVirtioSCSI()));
    36473699    connect(m_pActionRemoveController, SIGNAL(triggered(bool)), this, SLOT(sltRemoveController()));
    36483700    connect(m_pActionAddAttachment, SIGNAL(triggered(bool)), this, SLOT(sltAddAttachment()));
     
    37073759            Assert(m_pModelStorage->data(index, StorageModel::R_IsMoreNVMeControllersPossible).toBool());
    37083760            break;
     3761        case KStorageBus_VirtioSCSI:
     3762            Assert(m_pModelStorage->data(index, StorageModel::R_IsMoreVirtioSCSIControllersPossible).toBool());
     3763            break;
    37093764        default:
    37103765            break;
     
    39914046                && (   newControllerData.m_controllerBus == KStorageBus_SATA
    39924047                    || newControllerData.m_controllerBus == KStorageBus_SAS
    3993                     || newControllerData.m_controllerBus == KStorageBus_PCIe))
     4048                    || newControllerData.m_controllerBus == KStorageBus_PCIe
     4049                    || newControllerData.m_controllerBus == KStorageBus_VirtioSCSI))
    39944050            {
    39954051                ULONG uNewPortCount = newControllerData.m_uPortCount;
     
    40704126                && (   newControllerData.m_controllerBus == KStorageBus_SATA
    40714127                    || newControllerData.m_controllerBus == KStorageBus_SAS
    4072                     || newControllerData.m_controllerBus == KStorageBus_PCIe))
     4128                    || newControllerData.m_controllerBus == KStorageBus_PCIe
     4129                    || newControllerData.m_controllerBus == KStorageBus_VirtioSCSI))
    40734130            {
    40744131                ULONG uNewPortCount = newControllerData.m_uPortCount;
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h

    r78502 r78513  
    9696    NVMeControllerExpand,
    9797    NVMeControllerCollapse,
     98    VirtioSCSIControllerNormal,
     99    VirtioSCSIControllerExpand,
     100    VirtioSCSIControllerCollapse,
    98101    FloppyControllerNormal,
    99102    FloppyControllerExpand,
     
    110113    NVMeControllerAddEn,
    111114    NVMeControllerAddDis,
     115    VirtioSCSIControllerAddEn,
     116    VirtioSCSIControllerAddDis,
    112117    FloppyControllerAddEn,
    113118    FloppyControllerAddDis,
     
    161166    KStorageControllerType mCtrType;
    162167    QList<PixmapType> mPixmaps;
     168};
     169
     170/* virtio-scsi Controller Type */
     171class SHARED_LIBRARY_STUFF VirtioSCSIStorageControllerType : public AbstractControllerType
     172{
     173public:
     174
     175    VirtioSCSIStorageControllerType (KStorageControllerType aSubType);
     176
     177private:
     178
     179    KStorageControllerType first() const;
     180    uint size() const;
    163181};
    164182
     
    380398        R_IsMoreUSBControllersPossible,
    381399        R_IsMoreNVMeControllersPossible,
     400        R_IsMoreVirtioSCSIControllersPossible,
    382401        R_IsMoreAttachmentsPossible,
    383402
     
    587606    /** Handles command to add NVMe controller. */
    588607    void sltAddControllerNVMe();
     608    /** Handles command to add virtio-scsi controller. */
     609    void sltAddControllerVirtioSCSI();
    589610    /** Handles command to remove controller. */
    590611    void sltRemoveController();
     
    733754    /** Holds the 'Add NVMe Controller' action instance. */
    734755    QAction *m_pActionAddControllerNVMe;
     756    /** Holds the 'Add virtio-scsi Controller' action instance. */
     757    QAction *m_pActionAddControllerVirtioSCSI;
    735758    /** Holds the 'Add Attachment' action instance. */
    736759    QAction *m_pActionAddAttachment;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette