Home php教程 PHP开发 Device Mapper mechanism in Linux system kernel (1) (2)

Device Mapper mechanism in Linux system kernel (1) (2)

Dec 23, 2016 pm 02:06 PM

Let’s take a closer look at the specific implementation of the above three objects in the code. The mapped_device structure defined in the dm.c file is used to represent the mapped device. It mainly includes the locks related to the mapped device, the registered request queue and some memory pools as well as pointers. The pointer and other fields of its corresponding mapping table. The mapping table corresponding to the Mapped device is represented by the dm_table structure defined in the dm_table.c file. This structure contains an array of dm_target structures. The dm_target structure specifically describes the mapping relationship between mapped_device and one of its target devices. In the dm_table structure, these dm_targets are organized in a B-tree manner to facilitate the search operation during IO request mapping. The Dm_target structure specifically records the start address and range of the mapped device logical area mapped by the structure corresponding to the target device, and also contains a pointer to the target_type structure of the specific target device-related operations. The Target_type structure mainly contains the name of the target driver plug-in corresponding to the target device, the defined methods of building and deleting the target device of this type, the IO request remapping and ending IO methods corresponding to the target device of this type, etc. The field representing the specific target device is the private field in dm_target, and the pointer points to the structure corresponding to the specific target device mapped by the mapped device. Indicates that the specific structure of the target device differs due to different target types. For example, the structure of the simplest linear mapping target type corresponding to the target device is the linear_c structure defined in the dm-linear.c file. Its definition is as follows:

struct linear_c {

 struct dm_dev *dev;

 sector_t start;

};
Copy after login

The definition of the target device is quite simple. It only includes the dm_dev structure pointer representing the corresponding physical device and the offset address start in the unit of sectors in the physical device. The relationship between the above data structures is shown in Figure 3:

Device Mapper mechanism in Linux system kernel (1) (2)

Figure 3 The relationship between several important data structures in the device mapper

The establishment process in the kernel

In the following we will briefly introduce the process in the kernel based on the specific code The process of creating a mapped device:

1. According to the parameters passed by the ioctl interface provided by the kernel to user space, use the dev_create function in the dm-ioctl.c file to create the corresponding mapped device structure. This process is very simple. It mainly applies to the kernel for necessary memory resources, including the mapped device and the memory pool pre-applied for IO operations. The request queue dm_request corresponding to the mapped device is registered through the blk_queue_make_request function provided by the kernel. And register the mapped device as a disk block device in the kernel.

2. Call dm_hash_insert to insert the created mapped device into a global hash table in the device mapper. This table stores all mapped devices currently created in the kernel.

The above is the content of the Device Mapper mechanism (1) (2) in the Linux system kernel. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1268
29
C# Tutorial
1248
24
Linux Architecture: Unveiling the 5 Basic Components Linux Architecture: Unveiling the 5 Basic Components Apr 20, 2025 am 12:04 AM

The five basic components of the Linux system are: 1. Kernel, 2. System library, 3. System utilities, 4. Graphical user interface, 5. Applications. The kernel manages hardware resources, the system library provides precompiled functions, system utilities are used for system management, the GUI provides visual interaction, and applications use these components to implement functions.

How to check the warehouse address of git How to check the warehouse address of git Apr 17, 2025 pm 01:54 PM

To view the Git repository address, perform the following steps: 1. Open the command line and navigate to the repository directory; 2. Run the "git remote -v" command; 3. View the repository name in the output and its corresponding address.

vscode Previous Next Shortcut Key vscode Previous Next Shortcut Key Apr 15, 2025 pm 10:51 PM

VS Code One-step/Next step shortcut key usage: One-step (backward): Windows/Linux: Ctrl ←; macOS: Cmd ←Next step (forward): Windows/Linux: Ctrl →; macOS: Cmd →

How to run sublime after writing the code How to run sublime after writing the code Apr 16, 2025 am 08:51 AM

There are six ways to run code in Sublime: through hotkeys, menus, build systems, command lines, set default build systems, and custom build commands, and run individual files/projects by right-clicking on projects/files. The build system availability depends on the installation of Sublime Text.

How to run java code in notepad How to run java code in notepad Apr 16, 2025 pm 07:39 PM

Although Notepad cannot run Java code directly, it can be achieved by using other tools: using the command line compiler (javac) to generate a bytecode file (filename.class). Use the Java interpreter (java) to interpret bytecode, execute the code, and output the result.

What is the main purpose of Linux? What is the main purpose of Linux? Apr 16, 2025 am 12:19 AM

The main uses of Linux include: 1. Server operating system, 2. Embedded system, 3. Desktop operating system, 4. Development and testing environment. Linux excels in these areas, providing stability, security and efficient development tools.

laravel installation code laravel installation code Apr 18, 2025 pm 12:30 PM

To install Laravel, follow these steps in sequence: Install Composer (for macOS/Linux and Windows) Install Laravel Installer Create a new project Start Service Access Application (URL: http://127.0.0.1:8000) Set up the database connection (if required)

git software installation git software installation Apr 17, 2025 am 11:57 AM

Installing Git software includes the following steps: Download the installation package and run the installation package to verify the installation configuration Git installation Git Bash (Windows only)

See all articles