From 7e6fcddefa4e9c366d1431f478dd5bf92bf8cce2 Mon Sep 17 00:00:00 2001 From: Penny Zheng Date: Fri, 10 May 2019 10:27:24 +0800 Subject: [PATCH] kernelRootParams: define agnostic commonkernelRootParams Let's define agnostic commonkernelRootParams for all hypervisors, including qemu, firecracker, etc. for now, it has two scenarios, one for NVDIMM, one for virtio-blk. Fixes: #1642 Signed-off-by: Penny Zheng --- virtcontainers/fc.go | 7 ++----- virtcontainers/hypervisor.go | 14 ++++++++++++++ virtcontainers/qemu_amd64.go | 6 +----- virtcontainers/qemu_arm64.go | 5 ++++- virtcontainers/qemu_s390x.go | 4 +--- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/virtcontainers/fc.go b/virtcontainers/fc.go index 4fde3f6def..efd8753adb 100644 --- a/virtcontainers/fc.go +++ b/virtcontainers/fc.go @@ -54,11 +54,8 @@ const ( fcDiskPoolSize = 8 ) -var fcKernelParams = []Param{ +var fcKernelParams = append(commonVirtioblkKernelRootParams, []Param{ // The boot source is the first partition of the first block device added - {"root", "/dev/vda1"}, - {"rootflags", "data=ordered,errors=remount-ro ro"}, - {"rootfstype", "ext4"}, {"pci", "off"}, {"reboot", "k"}, {"panic", "1"}, @@ -70,7 +67,7 @@ var fcKernelParams = []Param{ // Firecracker doesn't support ACPI // Fix kernel error "ACPI BIOS Error (bug)" {"acpi", "off"}, -} +}...) func (s vmmState) String() string { switch s { diff --git a/virtcontainers/hypervisor.go b/virtcontainers/hypervisor.go index 266c409838..9ad51ff061 100644 --- a/virtcontainers/hypervisor.go +++ b/virtcontainers/hypervisor.go @@ -53,6 +53,20 @@ const ( // In some architectures the maximum number of vCPUs depends on the number of physical cores. var defaultMaxQemuVCPUs = MaxQemuVCPUs() +// agnostic list of kernel root parameters for NVDIMM +var commonNvdimmKernelRootParams = []Param{ //nolint: unused, deadcode, varcheck + {"root", "/dev/pmem0p1"}, + {"rootflags", "dax,data=ordered,errors=remount-ro ro"}, + {"rootfstype", "ext4"}, +} + +// agnostic list of kernel root parameters for virtio-blk +var commonVirtioblkKernelRootParams = []Param{ //nolint: unused, deadcode, varcheck + {"root", "/dev/vda1"}, + {"rootflags", "data=ordered,errors=remount-ro ro"}, + {"rootfstype", "ext4"}, +} + // deviceType describes a virtualized device type. type deviceType int diff --git a/virtcontainers/qemu_amd64.go b/virtcontainers/qemu_amd64.go index 4cddaae1c8..f4865df6e7 100644 --- a/virtcontainers/qemu_amd64.go +++ b/virtcontainers/qemu_amd64.go @@ -35,11 +35,7 @@ var qemuPaths = map[string]string{ QemuQ35: defaultQemuPath, } -var kernelRootParams = []Param{ - {"root", "/dev/pmem0p1"}, - {"rootflags", "dax,data=ordered,errors=remount-ro ro"}, - {"rootfstype", "ext4"}, -} +var kernelRootParams = commonNvdimmKernelRootParams var kernelParams = []Param{ {"tsc", "reliable"}, diff --git a/virtcontainers/qemu_arm64.go b/virtcontainers/qemu_arm64.go index 81c0f2af81..02f19fd18b 100644 --- a/virtcontainers/qemu_arm64.go +++ b/virtcontainers/qemu_arm64.go @@ -43,9 +43,12 @@ var kernelParams = []Param{ {"iommu.passthrough", "0"}, } +// For now, AArch64 doesn't support DAX, so we couldn't use +// commonNvdimmKernelRootParams, the agnostic list of kernel +// root parameters for NVDIMM var kernelRootParams = []Param{ {"root", "/dev/pmem0p1"}, - {"rootflags", "data=ordered,errors=remount-ro rw"}, + {"rootflags", "data=ordered,errors=remount-ro ro"}, {"rootfstype", "ext4"}, } diff --git a/virtcontainers/qemu_s390x.go b/virtcontainers/qemu_s390x.go index 3974ff68c6..5b1f3b0bd5 100644 --- a/virtcontainers/qemu_s390x.go +++ b/virtcontainers/qemu_s390x.go @@ -39,9 +39,7 @@ var kernelParams = []Param{ {"console", "ttysclp0"}, } -var kernelRootParams = []Param{ - {"root", "/dev/vda1"}, -} +var kernelRootParams = commonVirtioblkKernelRootParams var supportedQemuMachines = []govmmQemu.Machine{ {