driver core: Convert '/' to '!' in dev_set_name()
authorRoland Dreier <rdreier@cisco.com>
Sat, 10 Jan 2009 06:27:42 +0000 (22:27 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 21 Jan 2009 04:52:08 +0000 (20:52 -0800)
commit7143f7a1a3603002e4ef3719fa92e8dd6e607099
treee0a5bb29f730eee9184467f9d076f3d81ffc9b2d
parentf3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b
driver core: Convert '/' to '!' in dev_set_name()

Commit 3ada8b7e ("block: struct device - replace bus_id with dev_name(),
dev_set_name()") deleted the code in register_disk() that changed a '/'
to a '!' in the device name when registering a disk, but dev_set_name()
does not perform this conversion.

This leads to amusing problems with disks that have '/' in their names:
for example a failure to boot with the root partition on a cciss device,
even though the kernel says it knows about the root device:

    VFS: Cannot open root device "cciss/c0d0p6" or unknown-block(0,0)
    Please append a correct "root=" boot option; here are the available partitions:
    6800        71652960 cciss/c0d0 driver: cciss
      6802               1 cciss/c0d0p2
      6805         2931831 cciss/c0d0p5
      6806        34354908 cciss/c0d0p6
    6810        71652960 cciss/c0d1 driver: cciss

Fix this by adding code to change '/' to '!' in dev_set_name() to handle
this until dev_set_name() is converted to use kobject_set_name().

Signed-off-by: Roland Dreier <rolandd@cisco.com>
Acked-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/base/core.c