Skip to content

Commit

Permalink
Driver Core: block: add nodename support for block drivers.
Browse files Browse the repository at this point in the history
This adds support for block drivers to report their requested nodename
to userspace.  It also updates a number of block drivers to provide the
needed subdirectory and device name to be used for them.

Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Jan Blunck <jblunck@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
kaysievers authored and gregkh committed Jun 16, 2009
1 parent f7a386c commit b03f38b
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
10 changes: 10 additions & 0 deletions block/genhd.c
Original file line number Diff line number Diff line change
Expand Up @@ -996,10 +996,20 @@ struct class block_class = {
.name = "block",
};

static char *block_nodename(struct device *dev)
{
struct gendisk *disk = dev_to_disk(dev);

if (disk->nodename)
return disk->nodename(disk);
return NULL;
}

static struct device_type disk_type = {
.name = "disk",
.groups = disk_attr_groups,
.release = disk_release,
.nodename = block_nodename,
};

#ifdef CONFIG_PROC_FS
Expand Down
7 changes: 7 additions & 0 deletions drivers/block/pktcdvd.c
Original file line number Diff line number Diff line change
Expand Up @@ -2855,6 +2855,11 @@ static struct block_device_operations pktcdvd_ops = {
.media_changed = pkt_media_changed,
};

static char *pktcdvd_nodename(struct gendisk *gd)
{
return kasprintf(GFP_KERNEL, "pktcdvd/%s", gd->disk_name);
}

/*
* Set up mapping from pktcdvd device to CD-ROM device.
*/
Expand Down Expand Up @@ -2907,6 +2912,7 @@ static int pkt_setup_dev(dev_t dev, dev_t* pkt_dev)
disk->fops = &pktcdvd_ops;
disk->flags = GENHD_FL_REMOVABLE;
strcpy(disk->disk_name, pd->name);
disk->nodename = pktcdvd_nodename;
disk->private_data = pd;
disk->queue = blk_alloc_queue(GFP_KERNEL);
if (!disk->queue)
Expand Down Expand Up @@ -3062,6 +3068,7 @@ static const struct file_operations pkt_ctl_fops = {
static struct miscdevice pkt_misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = DRIVER_NAME,
.name = "pktcdvd/control",
.fops = &pkt_ctl_fops
};

Expand Down
2 changes: 1 addition & 1 deletion include/linux/genhd.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ struct gendisk {
* disks that can't be partitioned. */

char disk_name[DISK_NAME_LEN]; /* name of major driver */

char *(*nodename)(struct gendisk *gd);
/* Array of pointers to partitions indexed by partno.
* Protected with matching bdev lock but stat and other
* non-critical accesses use RCU. Always access through
Expand Down

0 comments on commit b03f38b

Please sign in to comment.