mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9f61c97e2b | ||
|
|
868e566c08 | ||
|
|
0f54fb1f5f | ||
|
|
758ef9604a | ||
|
|
8768a600ff |
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -186,7 +186,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cloud-hypervisor"
|
name = "cloud-hypervisor"
|
||||||
version = "20.1.0"
|
version = "20.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"api_client",
|
"api_client",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "cloud-hypervisor"
|
name = "cloud-hypervisor"
|
||||||
version = "20.1.0"
|
version = "20.2.0"
|
||||||
authors = ["The Cloud Hypervisor Authors"]
|
authors = ["The Cloud Hypervisor Authors"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
default-run = "cloud-hypervisor"
|
default-run = "cloud-hypervisor"
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
- [v20.2](#v202)
|
||||||
- [v20.1](#v201)
|
- [v20.1](#v201)
|
||||||
- [v20.0](#v200)
|
- [v20.0](#v200)
|
||||||
- [Multiple PCI segments support](#multiple-pci-segments-support)
|
- [Multiple PCI segments support](#multiple-pci-segments-support)
|
||||||
@@ -177,6 +178,18 @@
|
|||||||
- [Unit testing](#unit-testing)
|
- [Unit testing](#unit-testing)
|
||||||
- [Integration tests parallelization](#integration-tests-parallelization)
|
- [Integration tests parallelization](#integration-tests-parallelization)
|
||||||
|
|
||||||
|
|
||||||
|
# v20.2
|
||||||
|
|
||||||
|
This is a bug fix release. The following issues have been addressed:
|
||||||
|
|
||||||
|
* Don't error out when setting up the SIGWINCH handler (for console resize)
|
||||||
|
when this fails due to older kernel (#3456)
|
||||||
|
* Seccomp rules were refined to remove syscalls that are now unused
|
||||||
|
* Fix reboot on older host kernels when SIGWINCH handler was not initialised
|
||||||
|
(#3496)
|
||||||
|
* Fix virtio-vsock blocking issue (#3497)
|
||||||
|
|
||||||
# v20.1
|
# v20.1
|
||||||
|
|
||||||
This is a bug fix release. The following issues have been addressed:
|
This is a bug fix release. The following issues have been addressed:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
Name: cloud-hypervisor
|
Name: cloud-hypervisor
|
||||||
Summary: Cloud Hypervisor is an open source Virtual Machine Monitor (VMM) that runs on top of KVM.
|
Summary: Cloud Hypervisor is an open source Virtual Machine Monitor (VMM) that runs on top of KVM.
|
||||||
Version: 20.1
|
Version: 20.2
|
||||||
Release: 0%{?dist}
|
Release: 0%{?dist}
|
||||||
License: ASL 2.0 or BSD-3-clause
|
License: ASL 2.0 or BSD-3-clause
|
||||||
Group: Applications/System
|
Group: Applications/System
|
||||||
@@ -112,6 +112,9 @@ rm -rf %{buildroot}
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jan 04 2022 Rob Bradford <robert.bradford@intel.com> 20.2-0
|
||||||
|
- Update to 20.2
|
||||||
|
|
||||||
* Mon Dec 13 2021 Rob Bradford <robert.bradford@intel.com> 20.1-0
|
* Mon Dec 13 2021 Rob Bradford <robert.bradford@intel.com> 20.1-0
|
||||||
- Update to 20.1
|
- Update to 20.1
|
||||||
|
|
||||||
|
|||||||
@@ -362,25 +362,24 @@ impl VsockMuxer {
|
|||||||
|
|
||||||
/// Handle/dispatch an epoll event to its listener.
|
/// Handle/dispatch an epoll event to its listener.
|
||||||
///
|
///
|
||||||
fn handle_event(&mut self, fd: RawFd, evset: epoll::Events) {
|
fn handle_event(&mut self, fd: RawFd, event_set: epoll::Events) {
|
||||||
debug!(
|
debug!(
|
||||||
"vsock: muxer processing event: fd={}, evset={:?}",
|
"vsock: muxer processing event: fd={}, event_set={:?}",
|
||||||
fd, evset
|
fd, event_set
|
||||||
);
|
);
|
||||||
|
|
||||||
match self.listener_map.get_mut(&fd) {
|
match self.listener_map.get_mut(&fd) {
|
||||||
// This event needs to be forwarded to a `MuxerConnection` that is listening for
|
// This event needs to be forwarded to a `MuxerConnection` that is listening for
|
||||||
// it.
|
// it.
|
||||||
//
|
//
|
||||||
Some(EpollListener::Connection { key, evset }) => {
|
Some(EpollListener::Connection { key, evset: _ }) => {
|
||||||
let key_copy = *key;
|
let key_copy = *key;
|
||||||
let evset_copy = *evset;
|
|
||||||
// The handling of this event will most probably mutate the state of the
|
// The handling of this event will most probably mutate the state of the
|
||||||
// receiving connection. We'll need to check for new pending RX, event set
|
// receiving connection. We'll need to check for new pending RX, event set
|
||||||
// mutation, and all that, so we're wrapping the event delivery inside those
|
// mutation, and all that, so we're wrapping the event delivery inside those
|
||||||
// checks.
|
// checks.
|
||||||
self.apply_conn_mutation(key_copy, |conn| {
|
self.apply_conn_mutation(key_copy, |conn| {
|
||||||
conn.notify(evset_copy);
|
conn.notify(event_set);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -443,7 +442,10 @@ impl VsockMuxer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_ => {
|
_ => {
|
||||||
info!("vsock: unexpected event: fd={:?}, evset={:?}", fd, evset);
|
info!(
|
||||||
|
"vsock: unexpected event: fd={:?}, event_set={:?}",
|
||||||
|
fd, event_set
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1712,9 +1712,14 @@ impl DeviceManager {
|
|||||||
let seccomp_filter =
|
let seccomp_filter =
|
||||||
get_seccomp_filter(&self.seccomp_action, Thread::PtyForeground).unwrap();
|
get_seccomp_filter(&self.seccomp_action, Thread::PtyForeground).unwrap();
|
||||||
|
|
||||||
let pipe = start_sigwinch_listener(seccomp_filter, pty)?;
|
match start_sigwinch_listener(seccomp_filter, pty) {
|
||||||
|
Ok(pipe) => {
|
||||||
self.console_resize_pipe = Some(Arc::new(pipe));
|
self.console_resize_pipe = Some(Arc::new(pipe));
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
warn!("Ignoring error from setting up SIGWINCH listener: {}", e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@@ -1737,7 +1742,7 @@ impl DeviceManager {
|
|||||||
self.config.lock().unwrap().console.file = Some(pty.path.clone());
|
self.config.lock().unwrap().console.file = Some(pty.path.clone());
|
||||||
let file = pty.main.try_clone().unwrap();
|
let file = pty.main.try_clone().unwrap();
|
||||||
self.console_pty = Some(Arc::new(Mutex::new(pty)));
|
self.console_pty = Some(Arc::new(Mutex::new(pty)));
|
||||||
self.console_resize_pipe = Some(Arc::new(resize_pipe.unwrap()));
|
self.console_resize_pipe = resize_pipe.map(Arc::new);
|
||||||
Endpoint::FilePair(file.try_clone().unwrap(), file)
|
Endpoint::FilePair(file.try_clone().unwrap(), file)
|
||||||
} else {
|
} else {
|
||||||
let (main, mut sub, path) =
|
let (main, mut sub, path) =
|
||||||
|
|||||||
@@ -427,14 +427,11 @@ fn vmm_thread_rules() -> Result<Vec<(i64, Vec<SeccompRule>)>, BackendError> {
|
|||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
(libc::SYS_epoll_wait, vec![]),
|
(libc::SYS_epoll_wait, vec![]),
|
||||||
(libc::SYS_eventfd2, vec![]),
|
(libc::SYS_eventfd2, vec![]),
|
||||||
(libc::SYS_execve, vec![]),
|
|
||||||
(libc::SYS_exit, vec![]),
|
(libc::SYS_exit, vec![]),
|
||||||
(libc::SYS_exit_group, vec![]),
|
(libc::SYS_exit_group, vec![]),
|
||||||
(libc::SYS_fallocate, vec![]),
|
(libc::SYS_fallocate, vec![]),
|
||||||
(libc::SYS_fcntl, vec![]),
|
(libc::SYS_fcntl, vec![]),
|
||||||
(libc::SYS_fdatasync, vec![]),
|
(libc::SYS_fdatasync, vec![]),
|
||||||
#[cfg(target_arch = "x86_64")]
|
|
||||||
(libc::SYS_fork, vec![]),
|
|
||||||
(libc::SYS_fstat, vec![]),
|
(libc::SYS_fstat, vec![]),
|
||||||
(libc::SYS_fsync, vec![]),
|
(libc::SYS_fsync, vec![]),
|
||||||
(libc::SYS_ftruncate, vec![]),
|
(libc::SYS_ftruncate, vec![]),
|
||||||
|
|||||||
Reference in New Issue
Block a user