mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-04 10:24:37 +00:00
Merge pull request #11689 from Caspian443/fix-devmapper-selinux-mount-issue
runtime-rs: Empty block-rootfs Storage.options and align with Go runtime
This commit is contained in:
15
src/libs/kata-types/src/fs.rs
Normal file
15
src/libs/kata-types/src/fs.rs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2025 Kata Contributors
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
//
|
||||||
|
|
||||||
|
//! Filesystem-related constants shared across Kata components.
|
||||||
|
|
||||||
|
/// Root filesystem type: ext4
|
||||||
|
pub const VM_ROOTFS_FILESYSTEM_EXT4: &str = "ext4";
|
||||||
|
|
||||||
|
/// Root filesystem type: xfs
|
||||||
|
pub const VM_ROOTFS_FILESYSTEM_XFS: &str = "xfs";
|
||||||
|
|
||||||
|
/// Root filesystem type: erofs
|
||||||
|
pub const VM_ROOTFS_FILESYSTEM_EROFS: &str = "erofs";
|
@@ -40,6 +40,9 @@ pub(crate) mod utils;
|
|||||||
/// hypervisor capabilities
|
/// hypervisor capabilities
|
||||||
pub mod capabilities;
|
pub mod capabilities;
|
||||||
|
|
||||||
|
/// Filesystem-related constants
|
||||||
|
pub mod fs;
|
||||||
|
|
||||||
/// The Initdata specification defines the key data structures and algorithms for injecting
|
/// The Initdata specification defines the key data structures and algorithms for injecting
|
||||||
/// any well-defined data from an untrusted host into a TEE (Trusted Execution Environment).
|
/// any well-defined data from an untrusted host into a TEE (Trusted Execution Environment).
|
||||||
pub mod initdata;
|
pub mod initdata;
|
||||||
|
@@ -8,10 +8,12 @@ use anyhow::{anyhow, Result};
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
VM_ROOTFS_DRIVER_BLK, VM_ROOTFS_DRIVER_BLK_CCW, VM_ROOTFS_DRIVER_MMIO, VM_ROOTFS_DRIVER_PMEM,
|
VM_ROOTFS_DRIVER_BLK, VM_ROOTFS_DRIVER_BLK_CCW, VM_ROOTFS_DRIVER_MMIO, VM_ROOTFS_DRIVER_PMEM,
|
||||||
VM_ROOTFS_FILESYSTEM_EROFS, VM_ROOTFS_FILESYSTEM_EXT4, VM_ROOTFS_FILESYSTEM_XFS,
|
|
||||||
VM_ROOTFS_ROOT_BLK, VM_ROOTFS_ROOT_PMEM,
|
VM_ROOTFS_ROOT_BLK, VM_ROOTFS_ROOT_PMEM,
|
||||||
};
|
};
|
||||||
use kata_types::config::LOG_VPORT_OPTION;
|
use kata_types::config::LOG_VPORT_OPTION;
|
||||||
|
use kata_types::fs::{
|
||||||
|
VM_ROOTFS_FILESYSTEM_EROFS, VM_ROOTFS_FILESYSTEM_EXT4, VM_ROOTFS_FILESYSTEM_XFS,
|
||||||
|
};
|
||||||
|
|
||||||
// Port where the agent will send the logs. Logs are sent through the vsock in cases
|
// Port where the agent will send the logs. Logs are sent through the vsock in cases
|
||||||
// where the hypervisor has no console.sock, i.e dragonball
|
// where the hypervisor has no console.sock, i.e dragonball
|
||||||
@@ -179,9 +181,10 @@ mod tests {
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
VM_ROOTFS_DRIVER_BLK, VM_ROOTFS_DRIVER_PMEM, VM_ROOTFS_FILESYSTEM_EROFS,
|
VM_ROOTFS_DRIVER_BLK, VM_ROOTFS_DRIVER_PMEM, VM_ROOTFS_ROOT_BLK, VM_ROOTFS_ROOT_PMEM,
|
||||||
VM_ROOTFS_FILESYSTEM_EXT4, VM_ROOTFS_FILESYSTEM_XFS, VM_ROOTFS_ROOT_BLK,
|
};
|
||||||
VM_ROOTFS_ROOT_PMEM,
|
use kata_types::fs::{
|
||||||
|
VM_ROOTFS_FILESYSTEM_EROFS, VM_ROOTFS_FILESYSTEM_EXT4, VM_ROOTFS_FILESYSTEM_XFS,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@@ -47,11 +47,6 @@ const VM_ROOTFS_DRIVER_MMIO: &str = "virtio-blk-mmio";
|
|||||||
const VM_ROOTFS_ROOT_BLK: &str = "/dev/vda1";
|
const VM_ROOTFS_ROOT_BLK: &str = "/dev/vda1";
|
||||||
const VM_ROOTFS_ROOT_PMEM: &str = "/dev/pmem0p1";
|
const VM_ROOTFS_ROOT_PMEM: &str = "/dev/pmem0p1";
|
||||||
|
|
||||||
// Config which filesystem to use as rootfs type
|
|
||||||
const VM_ROOTFS_FILESYSTEM_EXT4: &str = "ext4";
|
|
||||||
const VM_ROOTFS_FILESYSTEM_XFS: &str = "xfs";
|
|
||||||
const VM_ROOTFS_FILESYSTEM_EROFS: &str = "erofs";
|
|
||||||
|
|
||||||
// before using hugepages for VM, we need to mount hugetlbfs
|
// before using hugepages for VM, we need to mount hugetlbfs
|
||||||
// /dev/hugepages will be the mount point
|
// /dev/hugepages will be the mount point
|
||||||
// mkdir -p /dev/hugepages
|
// mkdir -p /dev/hugepages
|
||||||
|
@@ -19,6 +19,7 @@ use hypervisor::{
|
|||||||
use kata_types::config::hypervisor::{
|
use kata_types::config::hypervisor::{
|
||||||
VIRTIO_BLK_CCW, VIRTIO_BLK_MMIO, VIRTIO_BLK_PCI, VIRTIO_PMEM, VIRTIO_SCSI,
|
VIRTIO_BLK_CCW, VIRTIO_BLK_MMIO, VIRTIO_BLK_PCI, VIRTIO_PMEM, VIRTIO_SCSI,
|
||||||
};
|
};
|
||||||
|
use kata_types::fs::VM_ROOTFS_FILESYSTEM_XFS;
|
||||||
use kata_types::mount::Mount;
|
use kata_types::mount::Mount;
|
||||||
use nix::sys::stat::{self, SFlag};
|
use nix::sys::stat::{self, SFlag};
|
||||||
use oci_spec::runtime as oci;
|
use oci_spec::runtime as oci;
|
||||||
@@ -67,10 +68,17 @@ impl BlockRootfs {
|
|||||||
let mut storage = Storage {
|
let mut storage = Storage {
|
||||||
fs_type: rootfs.fs_type.clone(),
|
fs_type: rootfs.fs_type.clone(),
|
||||||
mount_point: container_path.clone(),
|
mount_point: container_path.clone(),
|
||||||
options: rootfs.options.clone(),
|
options: vec![],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// XFS rootfs: add 'nouuid' to avoid UUID conflicts when the same
|
||||||
|
// disk image is mounted across multiple VMs/containers.
|
||||||
|
// This allows mounting XFS volumes that share the same UUID.
|
||||||
|
if rootfs.fs_type == VM_ROOTFS_FILESYSTEM_XFS {
|
||||||
|
storage.options.push("nouuid".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
let mut device_id: String = "".to_owned();
|
let mut device_id: String = "".to_owned();
|
||||||
if let DeviceType::Block(device) = device_info {
|
if let DeviceType::Block(device) = device_info {
|
||||||
storage.driver = device.config.driver_option;
|
storage.driver = device.config.driver_option;
|
||||||
|
Reference in New Issue
Block a user