- 論壇徽章:
- 0
|
block_device
相關數(shù)據(jù)結構:
struct block_device {
dev_t bd_dev; /* not a kdev_t - it's a search key */
struct inode * bd_inode; /* will die */
int bd_openers;
struct semaphore bd_sem; /* open/close mutex */
struct semaphore bd_mount_sem; /* mount mutex */
struct list_head bd_inodes;
void * bd_holder;
int bd_holders;
struct block_device * bd_contains;
unsigned bd_block_size;
struct hd_struct * bd_part;
/* number of times partitions within this device have been opened. */
unsigned bd_part_count;
int bd_invalidated;
struct gendisk * bd_disk;
struct list_head bd_list;
struct backing_dev_info *bd_inode_backing_dev_info;
/*
* Private data. You must have bd_claim'ed the block_device
* to use this. NOTE: bd_claim allows an owner to claim
* the same device multiple times, the owner must take special
* care to not mess up bd_private for that case.
*/
unsigned long bd_private;
};
每一個塊設備都由一個block_device對象來表示.
這里所說的塊設備其實是指一個邏輯塊設備.
比如一個磁盤由一個block_device對象來表示,而該磁盤又分了三個分區(qū),這三個分區(qū)就又是三個邏輯塊設備.
block_device中的bd_contains字段指向與整個磁盤相關的block_device對象.
因而,如果如果block_device表示一個磁盤分區(qū),則其bd_contains指向整個磁盤的block_device對象.
如果block_device表示的是一個磁盤,則其bd_contains指向自己.
block_device中有幾個比較重要的字段:
bd_disk 指向塊設備中磁盤對應的gendisk結構.
bd_part 指向hd_struct分區(qū)描述符(如果是整個磁盤的話,bd_part為NULL)
綜合前面所有的結構,整體的結構關系如下圖所示:
block_device.gif (14.52 KB, 下載次數(shù): 148)
下載附件
2008-06-04 16:33 上傳
|
|