mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-22 11:13:22 +00:00
doc: Add ai doc translate tool and add English doc. (#1168)
- add tools/doc_translator.py - translated docs into English Signed-off-by: longjin <longjin@DragonOS.org>
This commit is contained in:
29
docs/locales/en/kernel/filesystem/index.rst
Normal file
29
docs/locales/en/kernel/filesystem/index.rst
Normal file
@ -0,0 +1,29 @@
|
||||
.. note:: AI Translation Notice
|
||||
|
||||
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
|
||||
|
||||
- Source document: kernel/filesystem/index.rst
|
||||
|
||||
- Translation time: 2025-05-19 01:41:15
|
||||
|
||||
- Translation model: `Qwen/Qwen3-8B`
|
||||
|
||||
|
||||
Please report issues via `Community Channel <https://github.com/DragonOS-Community/DragonOS/issues>`_
|
||||
|
||||
File System
|
||||
====================================
|
||||
|
||||
The file system module of DragonOS consists of VFS (Virtual File System) and specific file systems.
|
||||
|
||||
todo: Due to the refactoring of the file system module, the documentation is temporarily unavailable and will be completed by April 10, 2023.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Contents
|
||||
|
||||
overview
|
||||
vfs/index
|
||||
sysfs
|
||||
kernfs
|
||||
unionfs/index
|
37
docs/locales/en/kernel/filesystem/kernfs.md
Normal file
37
docs/locales/en/kernel/filesystem/kernfs.md
Normal file
@ -0,0 +1,37 @@
|
||||
:::{note}
|
||||
**AI Translation Notice**
|
||||
|
||||
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
|
||||
|
||||
- Source document: kernel/filesystem/kernfs.md
|
||||
|
||||
- Translation time: 2025-05-19 01:41:15
|
||||
|
||||
- Translation model: `Qwen/Qwen3-8B`
|
||||
|
||||
Please report issues via [Community Channel](https://github.com/DragonOS-Community/DragonOS/issues)
|
||||
|
||||
:::
|
||||
|
||||
# KernFS
|
||||
|
||||
:::{note}
|
||||
|
||||
Maintainer:
|
||||
- Long Jin <longjin@dragonos.org>
|
||||
:::
|
||||
|
||||
## 1. Introduction
|
||||
  KernFS is a pseudo file system that acts as a container for other kernel file systems, providing a file interface to users. Its core functionality is that when files in KernFS are read/written or trigger callback points, the predefined callback functions will be invoked, triggering operations on other kernel file systems.
|
||||
|
||||
  This design decouples the basic operations of SysFS and file systems. KernFS serves as the carrier of SysFS, allowing SysFS to focus more on the management of KObjects, resulting in more elegant code.
|
||||
|
||||
  In the future, the kernel subsystem of DragonOS or other kernel file systems can use KernFS as a carrier for file system operations, decoupling the system management logic from specific file system operations.
|
||||
|
||||
## 2. Usage
|
||||
|
||||
  Taking SysFS as an example, a new KernFS instance is created as the file system interface for SysFS, and then it is mounted under the directory `/sys`. Then, sysfs implements the upper-layer logic to manage KObjects. Each upper-layer KObject must include a KernFSInode. By setting the PrivateData of KernFSInode, KernFS can retrieve the corresponding KObject or sysfs attribute based on the Inode. Furthermore, when creating a KernFSInode, different callbacks are passed to the specific Inode, enabling "different Inodes to trigger different callback behaviors when read or written."
|
||||
|
||||
  When a callback occurs, KernFS passes the callback information and private information to the callback function, allowing the callback function to retrieve the corresponding KObject or sysfs attribute based on the input information, thus achieving the high-level functionality provided by sysfs.
|
||||
|
||||
  From the above description, we can see that KernFS achieves the purpose of "decoupling specific file operations from high-level management logic" by storing the callback functions and callback information of the upper-layer file systems.
|
107
docs/locales/en/kernel/filesystem/overview.md
Normal file
107
docs/locales/en/kernel/filesystem/overview.md
Normal file
@ -0,0 +1,107 @@
|
||||
:::{note}
|
||||
**AI Translation Notice**
|
||||
|
||||
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
|
||||
|
||||
- Source document: kernel/filesystem/overview.md
|
||||
|
||||
- Translation time: 2025-05-19 01:41:36
|
||||
|
||||
- Translation model: `Qwen/Qwen3-8B`
|
||||
|
||||
Please report issues via [Community Channel](https://github.com/DragonOS-Community/DragonOS/issues)
|
||||
|
||||
:::
|
||||
|
||||
:::{note}
|
||||
Author of this article: Long Jin
|
||||
|
||||
Email: <longjin@DragonOS.org>
|
||||
:::
|
||||
|
||||
# Overview
|
||||
|
||||
  In this article, we will introduce the architecture design of the DragonOS file system.
|
||||
|
||||
## Overview
|
||||
|
||||
  As shown in the following diagram, the file system-related mechanisms of DragonOS mainly include the following parts:
|
||||
|
||||
- System call interface
|
||||
- Virtual File System (VFS)
|
||||
- File abstraction (File)
|
||||
- Mount file system (MountFS)
|
||||
- Specific file systems
|
||||
|
||||
```text
|
||||
┌─────────────────────────────────────────────────┐
|
||||
│ │
|
||||
Syscall: │ sys_open, sys_read, sys_write, sys_close, │
|
||||
│ │
|
||||
│ sys_lseek, etc.. │
|
||||
│ │
|
||||
└───────────────────────┬─────────────────────────┘
|
||||
│
|
||||
│
|
||||
VFS: ┌──────▼─────┐
|
||||
│ │
|
||||
│ File │
|
||||
│ │
|
||||
└──────┬─────┘
|
||||
│
|
||||
┌────────▼────────┐
|
||||
│ │
|
||||
│ MountFS │
|
||||
│ │
|
||||
└────┬────────────┘
|
||||
│
|
||||
Filesystems: ┌─────────────┼─────────────┬────────────┐
|
||||
│ │ │ │
|
||||
┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼────┐ ┌─────▼─────┐
|
||||
│ │ │ │ │ │ │ │
|
||||
│ FAT │ │ DevFS │ │ ProcFS │ │ RamFS │
|
||||
│ │ │ │ │ │ │ │
|
||||
└───────────┘ └───────────┘ └──────────┘ └───────────┘
|
||||
```
|
||||
|
||||
## System Call Interface
|
||||
|
||||
  The file system-related system call interfaces of DragonOS mainly include the following:
|
||||
|
||||
- `sys_open`: Open file
|
||||
- `sys_read`: Read file
|
||||
- `sys_write`: Write file
|
||||
- `sys_close`: Close file
|
||||
- `sys_lseek`: Set file pointer position
|
||||
- `sys_mkdir`: Create directory
|
||||
- `sys_unlink_at`: Delete file or directory (distinguish between file and directory by parameter `flag`)
|
||||
- `sys_ioctl`: Control device (not implemented)
|
||||
- `sys_fstat`: Get file status (not implemented)
|
||||
- `sys_fsync`: Synchronize file (not implemented)
|
||||
- `sys_ftruncate`: Truncate file (not implemented)
|
||||
- `sys_fchmod`: Modify file permissions (not implemented)
|
||||
- Other system call interfaces (not implemented)
|
||||
|
||||
  For the specific meaning of the interfaces, you can refer to the relevant documentation of Linux.
|
||||
|
||||
## Virtual File System (VFS)
|
||||
|
||||
  VFS is the core of the DragonOS file system, providing a unified set of file system interfaces, allowing DragonOS to support various different file systems. The main functions of VFS include:
|
||||
|
||||
- Provide a unified file system interface
|
||||
- Provide file system mounting and unmounting mechanism (MountFS)
|
||||
- Provide file abstraction (File)
|
||||
- Provide file system abstraction (FileSystem)
|
||||
- Provide IndexNode abstraction
|
||||
- Provide file system caching and synchronization mechanism (not implemented yet)
|
||||
|
||||
  For detailed introduction of VFS, please see [DragonOS Virtual File System](vfs/index.rst).
|
||||
|
||||
## Specific File Systems
|
||||
|
||||
  The file systems currently supported by DragonOS include:
|
||||
|
||||
- FAT file system (FAT12, FAT16, FAT32)
|
||||
- DevFS
|
||||
- ProcFS
|
||||
- RamFS
|
124
docs/locales/en/kernel/filesystem/sysfs.md
Normal file
124
docs/locales/en/kernel/filesystem/sysfs.md
Normal file
@ -0,0 +1,124 @@
|
||||
:::{note}
|
||||
**AI Translation Notice**
|
||||
|
||||
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
|
||||
|
||||
- Source document: kernel/filesystem/sysfs.md
|
||||
|
||||
- Translation time: 2025-05-19 01:41:50
|
||||
|
||||
- Translation model: `Qwen/Qwen3-8B`
|
||||
|
||||
Please report issues via [Community Channel](https://github.com/DragonOS-Community/DragonOS/issues)
|
||||
|
||||
:::
|
||||
|
||||
# SysFS
|
||||
|
||||
:::{note}
|
||||
Author: Huang Ting
|
||||
|
||||
Email: <huangting@DragonOS.org>
|
||||
:::
|
||||
|
||||
## 1. SysFS and Device Driver Model
|
||||
|
||||
### 1.1. The relationship between devices, drivers, buses, etc., is complex
|
||||
|
||||
  If you want the kernel to run smoothly, you must code these functionalities for each module. This will make the kernel very bloated and redundant. The idea of the device model is to abstract these codes into a shared framework for all modules. This not only makes the code concise, but also allows device driver developers to avoid the headache of this essential but burdensome task, and focus their limited energy on implementing the differences of the devices.
|
||||
|
||||
  The device model provides a template, an optimal approach and process that has been proven. This reduces unnecessary errors during the development process and clears the way for future maintenance.
|
||||
|
||||
### 1.2. sysfs is a memory-based file system, its role is to provide kernel information in the form of files for user programs to use.
|
||||
|
||||
  sysfs can be seen as a file system similar to proc, devfs, and devpty. This file system is virtual and can make it easier to manage system devices. It can generate a hierarchical view of all system hardware, similar to the proc file system that provides process and status information. sysfs organizes the devices and buses connected to the system into a hierarchical file structure, which can be accessed from user space, exporting kernel data structures and their attributes to user space.
|
||||
|
||||
## 2. Device Driver Model in DragonOS
|
||||
|
||||
### 2.1. The basic elements are composed of devices and drivers
|
||||
|
||||
#### 2.1.1. Device
|
||||
|
||||
```rust
|
||||
/// @brief: 所有设备都应该实现该trait
|
||||
pub trait Device: Any + Send + Sync + Debug {}
|
||||
```
|
||||
|
||||
  DragonOS uses a global device manager to manage all devices in the system.
|
||||
|
||||
```rust
|
||||
/// @brief Device管理器
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct DeviceManager {
|
||||
devices: BTreeMap<IdTable, Arc<dyn Device>>, // 所有设备
|
||||
sys_info: Option<Arc<dyn IndexNode>>, // sys information
|
||||
}
|
||||
```
|
||||
|
||||
#### 2.1.2. Driver
|
||||
|
||||
```rust
|
||||
/// @brief: 所有驱动驱动都应该实现该trait
|
||||
pub trait Driver: Any + Send + Sync + Debug {}
|
||||
```
|
||||
|
||||
  Similarly, drivers also use a global driver manager for management.
|
||||
|
||||
```rust
|
||||
/// @brief: 驱动管理器
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct DriverManager {
|
||||
drivers: BTreeMap<IdTable, Arc<dyn Driver>>, // 所有驱动
|
||||
sys_info: Option<Arc<dyn IndexNode>>, // sys information
|
||||
}
|
||||
```
|
||||
|
||||
### 2.2. Bus
|
||||
|
||||
  Bus is a type of device, and it also needs a driver to initialize. Due to the special nature of buses, a global bus manager is used for management.
|
||||
|
||||
```rust
|
||||
/// @brief: 总线驱动trait,所有总线驱动都应实现该trait
|
||||
pub trait BusDriver: Driver {}
|
||||
|
||||
/// @brief: 总线设备trait,所有总线都应实现该trait
|
||||
pub trait Bus: Device {}
|
||||
|
||||
/// @brief: 总线管理结构体
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct BusManager {
|
||||
buses: BTreeMap<IdTable, Arc<dyn Bus>>, // 总线设备表
|
||||
bus_drvs: BTreeMap<IdTable, Arc<dyn BusDriver>>, // 总线驱动表
|
||||
sys_info: Option<Arc<dyn IndexNode>>, // 总线inode
|
||||
}
|
||||
```
|
||||
|
||||
  As can be seen, each manager contains a sys_info. The device model establishes a connection with sysfs through this member, and sys_info points to the unique inode in sysfs. For a device, it corresponds to the devices folder under sysfs, and the same applies to other components.
|
||||
|
||||
## 3. How to Develop Drivers
|
||||
|
||||
  Taking the platform bus as an example, the platform bus is a virtual bus that can match devices and drivers mounted on it and drive the devices. This bus is a type of device and also a type of bus. When programming, you need to create an instance of this device and implement the Device trait and Bus trait for the device instance to indicate that this structure is a bus device. At the same time, the matching rules on the bus should be implemented. Different buses have different matching rules. This bus uses a matching table for matching, and both devices and drivers should have a matching table, indicating the devices supported by the driver and the drivers supported by the device.
|
||||
|
||||
```rust
|
||||
pub struct CompatibleTable(BTreeSet<&'static str>);
|
||||
```
|
||||
|
||||
  For a bus device, you need to call bus_register to register the bus into the system and visualize it in sysfs.
|
||||
|
||||
```rust
|
||||
/// @brief: 总线注册,将总线加入全局总线管理器中,并根据id table在sys/bus和sys/devices下生成文件夹
|
||||
/// @parameter bus: Bus设备实体
|
||||
/// @return: 成功:() 失败:DeviceError
|
||||
pub fn bus_register<T: Bus>(bus: Arc<T>) -> Result<(), DeviceError> {
|
||||
BUS_MANAGER.add_bus(bus.get_id_table(), bus.clone());
|
||||
match sys_bus_register(&bus.get_id_table().to_name()) {
|
||||
Ok(inode) => {
|
||||
let _ = sys_bus_init(&inode);
|
||||
return device_register(bus);
|
||||
}
|
||||
Err(_) => Err(DeviceError::RegisterError),
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
  From the source code of bus_register, we can see that this function not only generates a bus folder under sysfs/bus, but also internally calls device_register. This function adds the bus to the device manager and generates a device folder under sys/devices.
|
23
docs/locales/en/kernel/filesystem/unionfs/index.rst
Normal file
23
docs/locales/en/kernel/filesystem/unionfs/index.rst
Normal file
@ -0,0 +1,23 @@
|
||||
.. note:: AI Translation Notice
|
||||
|
||||
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
|
||||
|
||||
- Source document: kernel/filesystem/unionfs/index.rst
|
||||
|
||||
- Translation time: 2025-05-19 01:41:16
|
||||
|
||||
- Translation model: `Qwen/Qwen3-8B`
|
||||
|
||||
|
||||
Please report issues via `Community Channel <https://github.com/DragonOS-Community/DragonOS/issues>`_
|
||||
|
||||
====================================
|
||||
Union Filesystem
|
||||
====================================
|
||||
Union Filesystem:
|
||||
OverlayFS merges multiple filesystems (referred to as "layers") into a single logical filesystem, allowing users to see a unified directory structure.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
overlayfs
|
46
docs/locales/en/kernel/filesystem/unionfs/overlayfs.md
Normal file
46
docs/locales/en/kernel/filesystem/unionfs/overlayfs.md
Normal file
@ -0,0 +1,46 @@
|
||||
:::{note}
|
||||
**AI Translation Notice**
|
||||
|
||||
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
|
||||
|
||||
- Source document: kernel/filesystem/unionfs/overlayfs.md
|
||||
|
||||
- Translation time: 2025-05-19 01:41:18
|
||||
|
||||
- Translation model: `Qwen/Qwen3-8B`
|
||||
|
||||
Please report issues via [Community Channel](https://github.com/DragonOS-Community/DragonOS/issues)
|
||||
|
||||
:::
|
||||
|
||||
# overlayfs
|
||||
|
||||
OverlayFS is currently the most widely used union file system, with a simple principle and convenient usage, mainly used in containers.
|
||||
|
||||
In Docker, OverlayFS is one of the default storage drivers. Docker creates an independent upper directory for each container, while all containers share the same lower image file. This design makes resource sharing between containers more efficient and reduces storage requirements.
|
||||
|
||||
## Architecture Design
|
||||
|
||||
OverlayFS has two layers and a virtual merged layer.
|
||||
|
||||
- **Lower Layer (Lower Layer)**: Usually a read-only file system. It can contain multiple layers.
|
||||
- **Upper Layer (Upper Layer)**: A writable layer. All write operations are performed on this layer.
|
||||
- **Merged Layer (Merged Layer)**: The logical view of the upper and lower layers is merged, and the final file system presented to the user is shown.
|
||||
|
||||
## Working Principle
|
||||
|
||||
- **Read Operation**:
|
||||
- OverlayFS will first read the file from the Upper Layer. If the file does not exist in the upper layer, it will read the content from the Lower Layer.
|
||||
- **Write Operation**:
|
||||
- If a file is located in the Lower Layer and an attempt is made to write to it, the system will copy it up to the Upper Layer and then write to it in the upper layer. If the file already exists in the Upper Layer, it will be directly written to that layer.
|
||||
- **Delete Operation**:
|
||||
- When deleting a file, OverlayFS creates a whiteout entry in the upper layer, which hides the file in the lower layer.
|
||||
|
||||
## Copy-up
|
||||
|
||||
- **Copy-on-Write (Write-time Copy)**
|
||||
When a file in the lower layer is modified, it is copied to the upper layer (called copy-up). All subsequent modifications will be performed on the copied file in the upper layer.
|
||||
|
||||
## Implementation Logic
|
||||
|
||||
The implementation is achieved by building `ovlInode` to implement the `indexnode` trait to represent the inode of the upper or lower layer. Specific operations related to files and directories are handled accordingly.
|
16
docs/locales/en/kernel/filesystem/vfs/api.md
Normal file
16
docs/locales/en/kernel/filesystem/vfs/api.md
Normal file
@ -0,0 +1,16 @@
|
||||
:::{note}
|
||||
**AI Translation Notice**
|
||||
|
||||
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
|
||||
|
||||
- Source document: kernel/filesystem/vfs/api.md
|
||||
|
||||
- Translation time: 2025-05-19 01:41:12
|
||||
|
||||
- Translation model: `Qwen/Qwen3-8B`
|
||||
|
||||
Please report issues via [Community Channel](https://github.com/DragonOS-Community/DragonOS/issues)
|
||||
|
||||
:::
|
||||
|
||||
# VFS API Documentation
|
72
docs/locales/en/kernel/filesystem/vfs/design.md
Normal file
72
docs/locales/en/kernel/filesystem/vfs/design.md
Normal file
@ -0,0 +1,72 @@
|
||||
:::{note}
|
||||
**AI Translation Notice**
|
||||
|
||||
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
|
||||
|
||||
- Source document: kernel/filesystem/vfs/design.md
|
||||
|
||||
- Translation time: 2025-05-19 01:41:33
|
||||
|
||||
- Translation model: `Qwen/Qwen3-8B`
|
||||
|
||||
Please report issues via [Community Channel](https://github.com/DragonOS-Community/DragonOS/issues)
|
||||
|
||||
:::
|
||||
|
||||
:::{note}
|
||||
Author of this article: Long Jin
|
||||
|
||||
Email: <longjin@DragonOS.org>
|
||||
:::
|
||||
|
||||
# Design
|
||||
|
||||
  The architecture design of VFS is shown in the following diagram:
|
||||
|
||||
```text
|
||||
┌─────────┐
|
||||
│ │
|
||||
│ read │
|
||||
File │ │
|
||||
│ write │
|
||||
│ │ │
|
||||
│ │ ioctl │
|
||||
│ │ │
|
||||
│ │ lseek │
|
||||
│ │ │
|
||||
│ │ etc.. │
|
||||
│ └─────────┘
|
||||
│
|
||||
▼ ┌──────────────────────────────────────────────────────────────────────────────┐
|
||||
MountFS │ Maintain the mount tree and handle the mounting of file systems. │
|
||||
│ │ In particular, it handles the "crossing file system boundaries" condition │
|
||||
│ │ while doing "lookup" or "find" operations. │
|
||||
│ └──────────────────────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
│
|
||||
│
|
||||
Filesystems: │
|
||||
│
|
||||
▼ ┌────────────────────────────────────────────────────────────────────┐
|
||||
xxxFSInode │ Implement corresponding operations based on different file systems │
|
||||
└────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 1. File
|
||||
  The File structure is the most basic abstraction in VFS, representing an opened file. Whenever a process opens a file, a File structure is created to maintain the state information of that file.
|
||||
|
||||
## 2. Traits
|
||||
|
||||
  For each specific file system, the following traits must be implemented:
|
||||
|
||||
- FileSystem: Indicates that a struct is a file system
|
||||
- IndexNode: Indicates that a struct is an index node
|
||||
|
||||
  Generally, there is a one-to-one relationship between FileSystem and IndexNode, meaning that one file system corresponds to one type of IndexNode. However, for some special file systems, such as DevFS, different IndexNodes may exist based on different device types. Therefore, there is a one-to-many relationship between FileSystem and IndexNode.
|
||||
|
||||
## 3. MountFS
|
||||
|
||||
  Although MountFS implements the FileSystem and IndexNode traits, it is not itself a "file system," but rather a mechanism used to mount different file systems onto the same file system tree.
|
||||
All file systems that need to be mounted onto the file system tree must go through MountFS to complete the mounting process. In other words, each file system structure in the mount tree is wrapped with a MountFS structure.
|
||||
|
||||
  For most operations, MountFS simply forwards the operation to the specific file system without any processing. At the same time, to support cross-file system operations, such as searching in a directory tree, each lookup or find operation will go through the corresponding method of MountFSInode to determine whether the current inode is a mount point and handle it specially. If the operation is found to cross the boundary of a specific file system, MountFS will forward the operation to the next file system and perform an inode replacement. This functionality is implemented by wrapping a regular Inode structure with a MountFSInode structure.
|
33
docs/locales/en/kernel/filesystem/vfs/index.rst
Normal file
33
docs/locales/en/kernel/filesystem/vfs/index.rst
Normal file
@ -0,0 +1,33 @@
|
||||
.. note:: AI Translation Notice
|
||||
|
||||
This document was automatically translated by `Qwen/Qwen3-8B` model, for reference only.
|
||||
|
||||
- Source document: kernel/filesystem/vfs/index.rst
|
||||
|
||||
- Translation time: 2025-05-19 01:41:14
|
||||
|
||||
- Translation model: `Qwen/Qwen3-8B`
|
||||
|
||||
|
||||
Please report issues via `Community Channel <https://github.com/DragonOS-Community/DragonOS/issues>`_
|
||||
|
||||
VFS Virtual File System
|
||||
====================================
|
||||
|
||||
In DragonOS, VFS acts as an adapter, hiding the differences between specific file systems and providing a unified file operation interface abstraction to the outside.
|
||||
|
||||
VFS is the core of the file system in DragonOS. It provides a set of unified file system interfaces, enabling DragonOS to support various different file systems. The main functions of VFS include:
|
||||
|
||||
- Providing a unified file system interface
|
||||
- Providing mount and unmount mechanisms for file systems (MountFS)
|
||||
- Providing file abstraction (File)
|
||||
- Providing file system abstraction (FileSystem)
|
||||
- Providing IndexNode abstraction
|
||||
- Providing caching and synchronization mechanisms for file systems (not yet implemented)
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Directory
|
||||
|
||||
design
|
||||
api
|
Reference in New Issue
Block a user