aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSan Mehat <san@google.com>2009-10-10 09:35:24 -0700
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-09-27 02:50:40 +0200
commit2ee674444a86ac961d50456061f32f2a17b1b7a7 (patch)
tree1e863194bdd25e61f7731c12f9ae912ff06639e1
parent5f0e432dd8d27d9ad717955fafb2fb5f18f69504 (diff)
downloadkernel_i9300_mainline-2ee674444a86ac961d50456061f32f2a17b1b7a7.zip
kernel_i9300_mainline-2ee674444a86ac961d50456061f32f2a17b1b7a7.tar.gz
kernel_i9300_mainline-2ee674444a86ac961d50456061f32f2a17b1b7a7.tar.bz2
block: genhd: Add disk/partition specific uevent callbacks for partition info
For disk devices, a new uevent parameter 'NPARTS' specifies the number of partitions detected by the kernel. Partition devices get 'PARTN' which specifies the partitions index in the table, and 'PARTNAME', which specifies PARTNAME specifices the partition name of a partition device Signed-off-by: Dima Zavin <dima@android.com>
-rw-r--r--block/genhd.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/block/genhd.c b/block/genhd.c
index fcd6d4f..c6eb25d 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -1146,6 +1146,22 @@ static void disk_release(struct device *dev)
blk_put_queue(disk->queue);
kfree(disk);
}
+
+static int disk_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+ struct gendisk *disk = dev_to_disk(dev);
+ struct disk_part_iter piter;
+ struct hd_struct *part;
+ int cnt = 0;
+
+ disk_part_iter_init(&piter, disk, 0);
+ while((part = disk_part_iter_next(&piter)))
+ cnt++;
+ disk_part_iter_exit(&piter);
+ add_uevent_var(env, "NPARTS=%u", cnt);
+ return 0;
+}
+
struct class block_class = {
.name = "block",
};
@@ -1165,6 +1181,7 @@ static struct device_type disk_type = {
.groups = disk_attr_groups,
.release = disk_release,
.devnode = block_devnode,
+ .uevent = disk_uevent,
};
#ifdef CONFIG_PROC_FS