Skip to content

Commit

Permalink
block: partition: add partition specific uevent callbacks for partiti…
Browse files Browse the repository at this point in the history
…on 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]>
  • Loading branch information
San Mehat authored and torvalds committed Mar 15, 2016
1 parent 8d67d3c commit 0d9c51a
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions block/partition-generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 0d9c51a

Please sign in to comment.