Skip to content

Commit 6cbffe0

Browse files
author
Serban Iorga
committed
[block] Reorganize request execution logic
- Split the request execution logic into 2 parts - Write the request status as part of the request execution logic Signed-off-by: Serban Iorga <[email protected]>
1 parent a56ed10 commit 6cbffe0

File tree

3 files changed

+163
-189
lines changed

3 files changed

+163
-189
lines changed

src/devices/src/virtio/block/device.rs

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use logger::{error, warn, IncMetric, METRICS};
1919
use rate_limiter::{BucketUpdate, RateLimiter};
2020
use utils::eventfd::EventFd;
2121
use virtio_gen::virtio_blk::*;
22-
use vm_memory::{Bytes, GuestMemoryMmap};
22+
use vm_memory::GuestMemoryMmap;
2323

2424
use super::{
2525
super::{ActivateResult, DeviceState, Queue, VirtioDevice, TYPE_BLOCK},
@@ -309,22 +309,9 @@ impl Block {
309309
break;
310310
}
311311

312-
let status = Status::from_result(request.execute(&mut self.disk, mem));
313-
let virtio_blk_status = status.virtio_blk_status();
314-
let num_used_bytes = status.num_used_bytes();
315-
if let Status::Err(err_status) = status {
316-
METRICS.block.invalid_reqs_count.inc();
317-
error!(
318-
"Failed to execute {:?} virtio block request: {:?}",
319-
request.r#type, err_status
320-
);
321-
}
322-
323-
if let Err(e) = mem.write_obj(virtio_blk_status, request.status_addr) {
324-
error!("Failed to write virtio block status: {:?}", e)
325-
}
326-
327-
num_used_bytes
312+
request
313+
.execute(&mut self.disk, head.index, mem)
314+
.num_bytes_to_mem
328315
}
329316
Err(e) => {
330317
error!("Failed to parse available descriptor chain: {:?}", e);
@@ -496,7 +483,7 @@ pub(crate) mod tests {
496483
use crate::virtio::queue::tests::*;
497484
use rate_limiter::TokenType;
498485
use utils::tempfile::TempFile;
499-
use vm_memory::GuestAddress;
486+
use vm_memory::{Bytes, GuestAddress};
500487

501488
use crate::check_metric_after_block;
502489
use crate::virtio::block::test_utils::{

0 commit comments

Comments
 (0)