Home > php教程 > PHP开发 > body text

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

黄舟
Release: 2016-12-23 14:06:54
Original
1474 people have browsed it

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 (m.sbmmt.com)!


Related labels:
source: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
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!