mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
block: don't depend on consecutive minor space
* Implement disk_devt() and part_devt() and use them to directly access devt instead of computing it from ->major and ->first_minor. Note that all references to ->major and ->first_minor outside of block layer is used to determine devt of the disk (the part0) and as ->major and ->first_minor will continue to represent devt for the disk, converting these users aren't strictly necessary. However, convert them for consistency. * Implement disk_max_parts() to avoid directly deferencing genhd->minors. * Update bdget_disk() such that it doesn't assume consecutive minor space. * Move devt computation from register_disk() to add_disk() and make it the only one (all other usages use the initially determined value). These changes clean up the code and will help disk->part dereference fix and extended block device numbers. Signed-off-by: Tejun Heo <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
This commit is contained in:
parent
cf771cb5a7
commit
f331c0296f
16 changed files with 132 additions and 67 deletions
|
|
@ -76,7 +76,8 @@ dasd_devices_show(struct seq_file *m, void *v)
|
|||
/* Print kdev. */
|
||||
if (block->gdp)
|
||||
seq_printf(m, " at (%3d:%6d)",
|
||||
block->gdp->major, block->gdp->first_minor);
|
||||
MAJOR(disk_devt(block->gdp)),
|
||||
MINOR(disk_devt(block->gdp)));
|
||||
else
|
||||
seq_printf(m, " at (???:??????)");
|
||||
/* Print device name. */
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ dcssblk_assign_free_minor(struct dcssblk_dev_info *dev_info)
|
|||
found = 0;
|
||||
// test if minor available
|
||||
list_for_each_entry(entry, &dcssblk_devices, lh)
|
||||
if (minor == entry->gd->first_minor)
|
||||
if (minor == MINOR(disk_devt(entry->gd)))
|
||||
found++;
|
||||
if (!found) break; // got unused minor
|
||||
}
|
||||
|
|
@ -397,7 +397,7 @@ dcssblk_add_store(struct device *dev, struct device_attribute *attr, const char
|
|||
goto unload_seg;
|
||||
}
|
||||
sprintf(dev_info->gd->disk_name, "dcssblk%d",
|
||||
dev_info->gd->first_minor);
|
||||
MINOR(disk_devt(dev_info->gd)));
|
||||
list_add_tail(&dev_info->lh, &dcssblk_devices);
|
||||
|
||||
if (!try_module_get(THIS_MODULE)) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue