diff options
author | San Mehat <[email protected]> | 2016-03-15 14:53:26 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2016-03-15 16:55:16 -0700 |
commit | 0d9c51a6e1df4651379b8fca8a7a96595cd9988a (patch) | |
tree | 1e0284c54732a99c407bc322f86a80d7d0a21747 | |
parent | 8d67d3c2444fd3bb787cc6c27053717c01155966 (diff) |
block: partition: add partition specific uevent callbacks for partition info
This patch has been carried in the Android tree for quite some time and
is one of the few patches required to get a mainline kernel up and
running with an exsiting Android userspace. So I wanted to submit it
for review and consideration if it should be merged.
For partitions, add new uevent parameters 'PARTN' which specifies the
partitions index in the table, and 'PARTNAME', which specifies PARTNAME
specifices the partition name of a partition device.
Android's userspace uses this for creating device node links from the
partition name and number, ie:
/dev/block/platform/soc/by-name/system
or
/dev/block/platform/soc/by-num/p1
One can see its usage here:
https://android.googlesource.com/platform/system/core/+/master/init/devices.cpp#355
and
https://android.googlesource.com/platform/system/core/+/master/init/devices.cpp#494
[[email protected]: dropped NPARTS and reworded commit message for context]
Signed-off-by: Dima Zavin <[email protected]>
Signed-off-by: John Stultz <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: Rom Lemarchand <[email protected]>
Cc: Android Kernel Team <[email protected]>
Cc: Jeff Moyer <[email protected]>
Cc: <[email protected]>
Cc: Kees Cook <[email protected]>
Cc: Kay Sievers <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r-- | block/partition-generic.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/block/partition-generic.c b/block/partition-generic.c index fefd01b496a0..5d8701941054 100644 --- a/block/partition-generic.c +++ b/block/partition-generic.c @@ -217,10 +217,21 @@ static void part_release(struct device *dev) kfree(p); } +static int part_uevent(struct device *dev, struct kobj_uevent_env *env) +{ + struct hd_struct *part = dev_to_part(dev); + + add_uevent_var(env, "PARTN=%u", part->partno); + if (part->info && part->info->volname[0]) + add_uevent_var(env, "PARTNAME=%s", part->info->volname); + return 0; +} + struct device_type part_type = { .name = "partition", .groups = part_attr_groups, .release = part_release, + .uevent = part_uevent, }; static void delete_partition_rcu_cb(struct rcu_head *head) |