Device Mapper mechanism in Linux system kernel (1) (2)
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; };
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:
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)!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











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.

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.

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 →

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.

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.

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.

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)

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)
