From 59de1b8b6587b65a5f077c6c0da3ba64c81033a9 Mon Sep 17 00:00:00 2001 From: BUAA-CWH <1286139738@qq.com> Date: Thu, 6 Mar 2025 21:08:50 +0800 Subject: [PATCH] FEAT_MediatedDiskBugFix --- src/device/virtio/blk.rs | 2 +- src/device/virtio/mediated.rs | 2 -- src/kernel/async_task.rs | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/device/virtio/blk.rs b/src/device/virtio/blk.rs index 8b41eec..baa7753 100644 --- a/src/device/virtio/blk.rs +++ b/src/device/virtio/blk.rs @@ -32,7 +32,7 @@ pub const VIRTIO_BLK_F_SEG_MAX: usize = 1 << 2; /* BLOCK PARAMETERS*/ pub const SECTOR_BSIZE: usize = 512; pub const BLOCKIF_SIZE_MAX: usize = 128 * PAGE_SIZE; -pub const BLOCKIF_IOV_MAX: usize = 512; +pub const BLOCKIF_IOV_MAX: usize = 254; /* BLOCK REQUEST TYPE*/ pub const VIRTIO_BLK_T_IN: usize = 0; diff --git a/src/device/virtio/mediated.rs b/src/device/virtio/mediated.rs index aa499b4..2344227 100644 --- a/src/device/virtio/mediated.rs +++ b/src/device/virtio/mediated.rs @@ -235,8 +235,6 @@ pub fn mediated_ipi_handler(msg: IpiMessage) { if let IpiInnerMsg::MediatedMsg(mediated_msg) = msg.ipi_message { // generate IO request in `virtio_blk_notify_handler` virtio_blk_notify_handler(mediated_msg.vq, mediated_msg.blk, mediated_msg.src_vm); - // mark the ipi task as finish (pop it from the ipi queue) - finish_async_task(true); // invoke the executor to do IO request async_task_exe(); } diff --git a/src/kernel/async_task.rs b/src/kernel/async_task.rs index d6c7ef9..87c6e9f 100644 --- a/src/kernel/async_task.rs +++ b/src/kernel/async_task.rs @@ -401,7 +401,7 @@ pub fn async_task_exe() { } drop(ipi_list); drop(io_list); - if task.handle() || (ipi && active_vm_id() == 0) { + if task.handle() || ipi { // task finish finish_async_task(ipi); } else { -- Gitee