Check validity of cache and disk size in mount configs during 'occlum build'
This commit is contained in:
parent
64dfdb1304
commit
d1bcc739a2
@ -142,7 +142,7 @@ fn main() {
|
||||
|
||||
let occlum_json_file_path = sub_matches.value_of("output_json").unwrap();
|
||||
debug!(
|
||||
"Genereated Occlum user config (json) file name {:?}",
|
||||
"Generated Occlum user config (json) file name {:?}",
|
||||
occlum_json_file_path
|
||||
);
|
||||
|
||||
@ -321,7 +321,7 @@ fn main() {
|
||||
let config_user_space_max_size = parse_memory_size(&user_space_max_size);
|
||||
if config_user_space_max_size.is_err() {
|
||||
println!(
|
||||
"The kernel_space_heap_max_size \"{}\" is not correct.",
|
||||
"The user_space_max_size \"{}\" is not correct.",
|
||||
user_space_max_size
|
||||
);
|
||||
return;
|
||||
@ -430,6 +430,56 @@ fn main() {
|
||||
0x10_0000
|
||||
};
|
||||
|
||||
// Check validity of cache and disk size in mount options
|
||||
const CACHE_PAGE_SIZE: usize = 0x1000;
|
||||
const MIN_CACHE_SIZE: usize = 48 * CACHE_PAGE_SIZE; // 192KB
|
||||
const MIN_DISK_SIZE: usize = 5 * 1024usize.pow(3); // 5GB
|
||||
for mount in &occlum_config.mount {
|
||||
if let Some(cache_size_str) = mount.options.cache_size.as_ref() {
|
||||
let cache_size = {
|
||||
let cache_size = parse_memory_size(cache_size_str);
|
||||
if cache_size.is_err() {
|
||||
println!("The cache_size \"{}\" is not correct.", cache_size_str);
|
||||
return;
|
||||
}
|
||||
cache_size.unwrap()
|
||||
};
|
||||
if cache_size < MIN_CACHE_SIZE
|
||||
|| cache_size % CACHE_PAGE_SIZE != 0
|
||||
|| cache_size > kernel_heap_max_size
|
||||
{
|
||||
println!(
|
||||
"Invalid cache_size \"{}\". The cache_size must be 1. larger than the minimum size \"{}\", \
|
||||
2. aligned with cache page size \"{}\", \
|
||||
3. smaller than the kernel_heap_max_size \"{}\".",
|
||||
cache_size, MIN_CACHE_SIZE, CACHE_PAGE_SIZE, kernel_heap_max_size
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if mount.type_ == String::from("ext2") && mount.options.disk_size.is_none() {
|
||||
println!("The disk_size must be specified for Ext2.");
|
||||
return;
|
||||
}
|
||||
if let Some(disk_size_str) = mount.options.disk_size.as_ref() {
|
||||
let disk_size = {
|
||||
let disk_size = parse_memory_size(disk_size_str);
|
||||
if disk_size.is_err() {
|
||||
println!("The disk_size \"{}\" is not correct.", disk_size_str);
|
||||
return;
|
||||
}
|
||||
disk_size.unwrap()
|
||||
};
|
||||
if disk_size < MIN_DISK_SIZE {
|
||||
println!(
|
||||
"The disk_size \"{}\" is too small, minimum size is \"{}\".",
|
||||
disk_size, MIN_DISK_SIZE
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let kss_tuple = parse_kss_conf(&occlum_config);
|
||||
|
||||
let (misc_select, misc_mask) = if instance_is_for_edmm_platform {
|
||||
@ -677,7 +727,7 @@ fn gen_app_config(
|
||||
if root_mc.options.layers.is_none() {
|
||||
return Err("the root UnionFS must be given layers");
|
||||
}
|
||||
let mut root_image_sefs_mc = root_mc
|
||||
let root_image_sefs_mc = root_mc
|
||||
.options
|
||||
.layers
|
||||
.as_mut()
|
||||
|
Loading…
Reference in New Issue
Block a user