mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
block: Move request code to its own module
There is no reason for most of the Request struct to be writable from anywhere in the codebase. Encapsulate it. Use getter functions for access outside the request module. Replace the trivial setter for the writeback field with direct assignment. No functional change intended. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
This commit is contained in:
committed by
Bo Chen
parent
8f972567d0
commit
7c44f49293
+17
-17
@@ -182,7 +182,7 @@ impl BlockEpollHandler {
|
||||
request: &Request,
|
||||
disable_sector0_writes: bool,
|
||||
) -> result::Result<(), ExecuteError> {
|
||||
let request_type = request.request_type;
|
||||
let request_type = request.request_type();
|
||||
if (has_feature(features, VIRTIO_BLK_F_RO.into()))
|
||||
&& !(request_type == RequestType::In
|
||||
|| request_type == RequestType::GetDeviceId
|
||||
@@ -197,7 +197,7 @@ impl BlockEpollHandler {
|
||||
return Err(ExecuteError::ReadOnly);
|
||||
}
|
||||
|
||||
if request_type == RequestType::Out && disable_sector0_writes && request.sector == 0 {
|
||||
if request_type == RequestType::Out && disable_sector0_writes && request.sector() == 0 {
|
||||
warn!(
|
||||
"Attempting to write to sector 0 on a raw disk without specifying image_type=raw"
|
||||
);
|
||||
@@ -262,7 +262,7 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
warn!("Request check failed: {request:x?} {e:?}");
|
||||
desc_chain
|
||||
.memory()
|
||||
.write_obj(VIRTIO_BLK_S_IOERR, request.status_addr)
|
||||
.write_obj(VIRTIO_BLK_S_IOERR, request.status_addr())
|
||||
.map_err(Error::RequestStatus)?;
|
||||
|
||||
// If no asynchronous operation has been submitted, we can
|
||||
@@ -286,11 +286,11 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
break;
|
||||
}
|
||||
// Exercise the rate limiter only if this request is of data transfer type.
|
||||
if request.request_type == RequestType::In
|
||||
|| request.request_type == RequestType::Out
|
||||
if request.request_type() == RequestType::In
|
||||
|| request.request_type() == RequestType::Out
|
||||
{
|
||||
let mut bytes = Wrapping(0);
|
||||
for (_, data_len) in &request.data_descriptors {
|
||||
for (_, data_len) in request.data_descriptors() {
|
||||
bytes += Wrapping(*data_len as u64);
|
||||
}
|
||||
|
||||
@@ -307,7 +307,7 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
}
|
||||
}
|
||||
|
||||
request.set_writeback(self.writeback.load(Ordering::Acquire));
|
||||
request.writeback = self.writeback.load(Ordering::Acquire);
|
||||
|
||||
let result = request.execute_async(
|
||||
desc_chain.memory(),
|
||||
@@ -329,7 +329,7 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
_ => {
|
||||
unreachable!(
|
||||
"Unexpected batch request type: {:?}",
|
||||
request.request_type
|
||||
request.request_type()
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -346,11 +346,11 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
|
||||
desc_chain
|
||||
.memory()
|
||||
.write_obj(status as u8, request.status_addr)
|
||||
.write_obj(status as u8, request.status_addr())
|
||||
.map_err(Error::RequestStatus)?;
|
||||
|
||||
let len = if status == VIRTIO_BLK_S_OK
|
||||
&& request.request_type == RequestType::GetDeviceId
|
||||
&& request.request_type() == RequestType::GetDeviceId
|
||||
{
|
||||
self.serial.len() as u32 + 1
|
||||
} else {
|
||||
@@ -377,7 +377,7 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
warn!("Request failed with batch submission: {request:x?} {e:?}");
|
||||
let desc_index = user_data;
|
||||
let mem = self.mem.memory();
|
||||
mem.write_obj(VIRTIO_BLK_S_IOERR as u8, request.status_addr)
|
||||
mem.write_obj(VIRTIO_BLK_S_IOERR as u8, request.status_addr())
|
||||
.map_err(Error::RequestStatus)?;
|
||||
queue
|
||||
.add_used(mem.deref(), desc_index, 1)
|
||||
@@ -454,7 +454,7 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
|
||||
request.complete_async().map_err(Error::RequestCompleting)?;
|
||||
|
||||
let latency = request.start.elapsed().as_micros() as u64;
|
||||
let latency = request.start().elapsed().as_micros() as u64;
|
||||
let read_ops_last = self.counters.read_ops.load(Ordering::Relaxed);
|
||||
let write_ops_last = self.counters.write_ops.load(Ordering::Relaxed);
|
||||
let read_max = self.counters.read_latency_max.load(Ordering::Relaxed);
|
||||
@@ -462,9 +462,9 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
let mut read_avg = self.counters.read_latency_avg.load(Ordering::Relaxed);
|
||||
let mut write_avg = self.counters.write_latency_avg.load(Ordering::Relaxed);
|
||||
let (status, len) = if result >= 0 {
|
||||
match request.request_type {
|
||||
match request.request_type() {
|
||||
RequestType::In => {
|
||||
for (_, data_len) in &request.data_descriptors {
|
||||
for (_, data_len) in request.data_descriptors() {
|
||||
read_bytes += Wrapping(*data_len as u64);
|
||||
}
|
||||
read_ops += Wrapping(1);
|
||||
@@ -496,7 +496,7 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
if !request.writeback {
|
||||
self.disk_image.fsync(None).map_err(Error::Fsync)?;
|
||||
}
|
||||
for (_, data_len) in &request.data_descriptors {
|
||||
for (_, data_len) in request.data_descriptors() {
|
||||
write_bytes += Wrapping(*data_len as u64);
|
||||
}
|
||||
write_ops += Wrapping(1);
|
||||
@@ -535,7 +535,7 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
.write_latency_avg
|
||||
.store(write_avg, Ordering::Relaxed);
|
||||
|
||||
let len = if request.request_type == RequestType::In {
|
||||
let len = if request.request_type() == RequestType::In {
|
||||
result as u32 + 1
|
||||
} else {
|
||||
1
|
||||
@@ -550,7 +550,7 @@ Setting device status to 'NEEDS_RESET' and stopping processing queues until rese
|
||||
(VIRTIO_BLK_S_IOERR as u8, 1)
|
||||
};
|
||||
|
||||
mem.write_obj(status, request.status_addr)
|
||||
mem.write_obj(status, request.status_addr())
|
||||
.map_err(Error::RequestStatus)?;
|
||||
|
||||
let queue = &mut self.queue;
|
||||
|
||||
Reference in New Issue
Block a user