Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1945598
  • 博文数量: 1000
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7921
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 09:23
个人简介

storage R&D guy.

文章分类

全部博文(1000)

文章存档

2019年(5)

2017年(47)

2016年(38)

2015年(539)

2014年(193)

2013年(178)

分类: LINUX

2017-01-20 14:04:27

add_disk的主要功能总结如下

1、将一个磁盘对象gendisk加到bdev_map

Blk_register_region

这个函数会操作类型为 struct kobj_map的全局变量bdev_map,它将gendisk对象加入到bdev_map

 

 

2、/dev目录下生成一个设备节点

3、生成一个block_device对象和一个隶属于bdev文件系统的inode节点,这两个数据结构都位于struct bdev_inode中,所以通过bdev文件系统的inode可以容易的获得block_device对象。

struct bdev_inode {

struct block_device bdev;

struct inode vfs_inode;

};

 

4、扫描磁盘,如果有分区就在/dev目录下面增加节点

如果add_disk加入到系统的块设备上面有分区,会是什么情况呢。

A、rescan_partitions函数会调用disk_expend_part_tbl来扩展gendisk->part_tbl

B、调用add_partition向系统添加分区设备

(a)分配一个struct hd_struct

(b)Gendisk->part_tbl->part[partno] = p

(c)调用device_add将分区设备加入到系统中

 

 

 

阅读(766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~