提交 0fc71e3d 编写于 作者: T Tejun Heo 提交者: Jens Axboe

block: add partition attribute for partition number

With extended devt, finding out the partition number becomes a bit
more challenging as subtracting the minor number from that of the
parent device doesn't work anymore.  The only thing left is parsing
the partition name which is brittle and not exactly universal (some
have '-' between the device name and partition number while others
don't).  This patch introduced partition attribute which contains the
partition number of the device.  This should make finding partitions
and its index easier.

This problem and solution were suggested by H. Peter Anvin.
Signed-off-by: NTejun Heo <tj@kernel.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
上级 0e11e342
...@@ -195,6 +195,14 @@ check_partition(struct gendisk *hd, struct block_device *bdev) ...@@ -195,6 +195,14 @@ check_partition(struct gendisk *hd, struct block_device *bdev)
return ERR_PTR(res); return ERR_PTR(res);
} }
static ssize_t part_partition_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct hd_struct *p = dev_to_part(dev);
return sprintf(buf, "%d\n", p->partno);
}
static ssize_t part_start_show(struct device *dev, static ssize_t part_start_show(struct device *dev,
struct device_attribute *attr, char *buf) struct device_attribute *attr, char *buf)
{ {
...@@ -260,6 +268,7 @@ ssize_t part_fail_store(struct device *dev, ...@@ -260,6 +268,7 @@ ssize_t part_fail_store(struct device *dev,
} }
#endif #endif
static DEVICE_ATTR(partition, S_IRUGO, part_partition_show, NULL);
static DEVICE_ATTR(start, S_IRUGO, part_start_show, NULL); static DEVICE_ATTR(start, S_IRUGO, part_start_show, NULL);
static DEVICE_ATTR(size, S_IRUGO, part_size_show, NULL); static DEVICE_ATTR(size, S_IRUGO, part_size_show, NULL);
static DEVICE_ATTR(stat, S_IRUGO, part_stat_show, NULL); static DEVICE_ATTR(stat, S_IRUGO, part_stat_show, NULL);
...@@ -269,6 +278,7 @@ static struct device_attribute dev_attr_fail = ...@@ -269,6 +278,7 @@ static struct device_attribute dev_attr_fail =
#endif #endif
static struct attribute *part_attrs[] = { static struct attribute *part_attrs[] = {
&dev_attr_partition.attr,
&dev_attr_start.attr, &dev_attr_start.attr,
&dev_attr_size.attr, &dev_attr_size.attr,
&dev_attr_stat.attr, &dev_attr_stat.attr,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册