Skip to content

Commit b1a745a

Browse files
committed
fix(fs, vfs): revert filesystem and vfs locks back to spin::Mutex
- Revert Mutex in `axfs/disk.rs`, `fs/devfs.rs`, `fs/loop_dev.rs`, `fs/procfs.rs`, and `fs/tmpfs.rs` from `kspin::SpinNoIrq` back to `spin::Mutex`. - Revert custom preemption-disabling Mutex wrapper in `axfs-ng-vfs` back to standard `spin::Mutex`. - Remove `kernel_guard` dependency from `crates/axfs-ng-vfs/Cargo.toml`. 中译: fix(fs, vfs): 将文件系统和 VFS 层所有的不必要锁还原为 spin::Mutex - 将 `axfs/disk.rs`、`fs/devfs.rs`、`fs/loop_dev.rs`、`fs/procfs.rs` 和 `fs/tmpfs.rs` 中的 `kspin::SpinNoIrq` 还原回原生的 `spin::Mutex`。 - 将 `axfs-ng-vfs` 中的自定义关闭抢占 Mutex 包装器还原回标准的 `spin::Mutex`。 - 移除了 `crates/axfs-ng-vfs/Cargo.toml` 中引入的 `kernel_guard` 依赖。
1 parent 2f513e5 commit b1a745a

10 files changed

Lines changed: 9 additions & 61 deletions

File tree

Cargo.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

arceos/modules/axfs/src/disk.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use alloc::{
77
use core::mem;
88

99
use axdriver::{AxBlockDevice, prelude::*};
10-
use kspin::SpinNoIrq as Mutex;
10+
use spin::Mutex;
1111

1212
fn take<'a>(buf: &mut &'a [u8], cnt: usize) -> &'a [u8] {
1313
let (first, rem) = buf.split_at(cnt);

arceos/modules/axfs/src/fs/devfs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use axfs_ng_vfs::{
1616
use axpoll::{IoEvents, Pollable};
1717
use rand_core::{Rng, SeedableRng};
1818
use rand_pcg::Pcg64Mcg;
19-
use kspin::SpinNoIrq as Mutex;
19+
use spin::Mutex;
2020

2121
use super::super::disk::{SeekableDisk, SharedBlockDevice};
2222

arceos/modules/axfs/src/fs/loop_dev.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use alloc::sync::Arc;
22
use core::sync::atomic::{AtomicU64, Ordering};
3-
use kspin::SpinNoIrq as Mutex;
3+
use spin::Mutex;
44
use axdriver::prelude::{BaseDriverOps, BlockDriverOps, DeviceType, DevResult, DevError};
55

66
pub struct LoopDeviceState {

arceos/modules/axfs/src/fs/procfs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use axfs_ng_vfs::{
1515
InMemDir, InMemInode, update_metadata_impl, cmp_file_name,
1616
};
1717
use axpoll::{IoEvents, Pollable};
18-
use kspin::SpinNoIrq as Mutex;
18+
use spin::Mutex;
1919

2020
static PID_MAX: core::sync::atomic::AtomicU32 = core::sync::atomic::AtomicU32::new(32768);
2121

arceos/modules/axfs/src/fs/tmpfs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use core::{any::Any, task::Context, time::Duration, cell::OnceCell};
33

44
use axpoll::{IoEvents, Pollable};
55
use slab::Slab;
6-
use kspin::SpinNoIrq as Mutex;
6+
use spin::Mutex;
77

88
use axfs_ng_vfs::{
99
DeviceId, DirEntry, DirEntrySink, DirNode, DirNodeOps, FileNode, FileNodeOps, Filesystem,

crates/axfs-ng-vfs/Cargo.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,3 @@ version = "1.15"
5858
version = "0.10"
5959
features = ["mutex"]
6060
default-features = false
61-
62-
[dependencies.kernel_guard]
63-
version = "0.1"

crates/axfs-ng-vfs/src/inmem.rs

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,7 @@
11
use alloc::{collections::BTreeMap, string::String};
22
use core::cmp::Ordering;
33
use core::borrow::Borrow;
4-
pub struct Mutex<T> {
5-
inner: spin::Mutex<T>,
6-
}
7-
8-
impl<T: core::fmt::Debug> core::fmt::Debug for Mutex<T> {
9-
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10-
core::fmt::Debug::fmt(&self.inner, f)
11-
}
12-
}
13-
14-
impl<T> Mutex<T> {
15-
pub const fn new(t: T) -> Self {
16-
Self {
17-
inner: spin::Mutex::new(t),
18-
}
19-
}
20-
21-
pub fn lock(&self) -> MutexGuard<'_, T> {
22-
let guard = kernel_guard::NoPreempt::new();
23-
MutexGuard {
24-
inner: self.inner.lock(),
25-
_guard: guard,
26-
}
27-
}
28-
}
29-
30-
pub struct MutexGuard<'a, T> {
31-
inner: spin::MutexGuard<'a, T>,
32-
_guard: kernel_guard::NoPreempt,
33-
}
34-
35-
impl<'a, T> core::ops::Deref for MutexGuard<'a, T> {
36-
type Target = T;
37-
#[inline]
38-
fn deref(&self) -> &T {
39-
&*self.inner
40-
}
41-
}
42-
43-
impl<'a, T> core::ops::DerefMut for MutexGuard<'a, T> {
44-
#[inline]
45-
fn deref_mut(&mut self) -> &mut T {
46-
&mut *self.inner
47-
}
48-
}
49-
50-
impl<T: Default> Default for Mutex<T> {
51-
fn default() -> Self {
52-
Self::new(T::default())
53-
}
54-
}
4+
use spin::Mutex;
555

566
use crate::{DirEntrySink, NodeType, Metadata, MetadataUpdate, VfsResult};
577

crates/axfs-ng-vfs/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ pub use inmem::*;
1717

1818
pub type VfsError = axerrno::AxError;
1919
pub type VfsResult<T> = Result<T, VfsError>;
20+
21+
use spin::{Mutex, MutexGuard};

pulse_core/src/net/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use crate::fd_table::FdObject;
1212

1313
const RING_BUFFER_SIZE: usize = 65536;
1414

15-
pub static UNIX_REGISTRY: Mutex<alloc::collections::BTreeMap<alloc::string::String, (core::net::SocketAddr, alloc::sync::Weak<Socket>)>> = Mutex::new(alloc::collections::BTreeMap::new());
15+
pub static UNIX_REGISTRY: spin::Mutex<alloc::collections::BTreeMap<alloc::string::String, (core::net::SocketAddr, alloc::sync::Weak<Socket>)>> = spin::Mutex::new(alloc::collections::BTreeMap::new());
1616

1717
pub struct LocalSocketRingBuffer {
1818
arr: [u8; RING_BUFFER_SIZE],

0 commit comments

Comments
 (0)