vhost_user_net: Fix map_err losing the inner error

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
Sebastien Boeuf 2020-01-24 09:07:25 +01:00
parent f444ef6ccf
commit 4587cc7ffa

View File

@ -44,7 +44,7 @@ pub enum Error {
/// Failed to activate device. /// Failed to activate device.
BadActivate, BadActivate,
/// Failed to create kill eventfd /// Failed to create kill eventfd
CreateKillEventFd, CreateKillEventFd(io::Error),
/// Failed to add event. /// Failed to add event.
EpollCtl(io::Error), EpollCtl(io::Error),
/// Fail to wait event. /// Fail to wait event.
@ -68,13 +68,13 @@ pub enum Error {
/// Failed to parse sock parameter. /// Failed to parse sock parameter.
ParseSockParam, ParseSockParam,
/// Failed to parse ip parameter. /// Failed to parse ip parameter.
ParseIpParam, ParseIpParam(std::net::AddrParseError),
/// Failed to parse mask parameter. /// Failed to parse mask parameter.
ParseMaskParam, ParseMaskParam(std::net::AddrParseError),
/// Failed to parse queue number. /// Failed to parse queue number.
ParseQueueNumParam, ParseQueueNumParam(std::num::ParseIntError),
/// Failed to parse queue size. /// Failed to parse queue size.
ParseQueueSizeParam, ParseQueueSizeParam(std::num::ParseIntError),
/// Open tap device failed. /// Open tap device failed.
OpenTap(vm_virtio::net_util::Error), OpenTap(vm_virtio::net_util::Error),
} }
@ -144,7 +144,7 @@ impl VhostUserNetBackend {
Ok(VhostUserNetBackend { Ok(VhostUserNetBackend {
mem: None, mem: None,
vring_worker: None, vring_worker: None,
kill_evt: EventFd::new(EFD_NONBLOCK).map_err(|_| Error::CreateKillEventFd)?, kill_evt: EventFd::new(EFD_NONBLOCK).map_err(Error::CreateKillEventFd)?,
taps: taps_v, taps: taps_v,
rxs, rxs,
txs, txs,
@ -408,20 +408,16 @@ impl<'a> VhostUserNetBackendConfig<'a> {
return Err(Error::ParseSockParam); return Err(Error::ParseSockParam);
} }
if !ip_str.is_empty() { if !ip_str.is_empty() {
ip = ip_str.parse().map_err(|_| Error::ParseIpParam)?; ip = ip_str.parse().map_err(Error::ParseIpParam)?;
} }
if !mask_str.is_empty() { if !mask_str.is_empty() {
mask = mask_str.parse().map_err(|_| Error::ParseMaskParam)?; mask = mask_str.parse().map_err(Error::ParseMaskParam)?;
} }
if !num_queues_str.is_empty() { if !num_queues_str.is_empty() {
num_queues = num_queues_str num_queues = num_queues_str.parse().map_err(Error::ParseQueueNumParam)?;
.parse()
.map_err(|_| Error::ParseQueueNumParam)?;
} }
if !queue_size_str.is_empty() { if !queue_size_str.is_empty() {
queue_size = queue_size_str queue_size = queue_size_str.parse().map_err(Error::ParseQueueSizeParam)?;
.parse()
.map_err(|_| Error::ParseQueueSizeParam)?;
} }
Ok(VhostUserNetBackendConfig { Ok(VhostUserNetBackendConfig {