]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/partitions/check.c
block: fix bug in ptbl lookup cache
[linux-2.6-omap-h63xx.git] / fs / partitions / check.c
index 6d5b213b8a9b4b6e834ca9be99ae6c15a3dc0d13..6d720243f5f4a29a43a7b50dd005bbff32a7b0aa 100644 (file)
@@ -334,6 +334,7 @@ void delete_partition(struct gendisk *disk, int partno)
 
        blk_free_devt(part_devt(part));
        rcu_assign_pointer(ptbl->part[partno], NULL);
+       rcu_assign_pointer(ptbl->last_lookup, NULL);
        kobject_put(part->holder_dir);
        device_del(part_to_dev(part));
 
@@ -384,9 +385,9 @@ struct hd_struct *add_partition(struct gendisk *disk, int partno,
 
        dname = dev_name(ddev);
        if (isdigit(dname[strlen(dname) - 1]))
-               snprintf(pdev->bus_id, BUS_ID_SIZE, "%sp%d", dname, partno);
+               dev_set_name(pdev, "%sp%d", dname, partno);
        else
-               snprintf(pdev->bus_id, BUS_ID_SIZE, "%s%d", dname, partno);
+               dev_set_name(pdev, "%s%d", dname, partno);
 
        device_initialize(pdev);
        pdev->class = &block_class;
@@ -447,16 +448,11 @@ void register_disk(struct gendisk *disk)
        struct block_device *bdev;
        struct disk_part_iter piter;
        struct hd_struct *part;
-       char *s;
        int err;
 
        ddev->parent = disk->driverfs_dev;
 
-       strlcpy(ddev->bus_id, disk->disk_name, BUS_ID_SIZE);
-       /* ewww... some of these buggers have / in the name... */
-       s = strchr(ddev->bus_id, '/');
-       if (s)
-               *s = '!';
+       dev_set_name(ddev, disk->disk_name);
 
        /* delay uevents, until we scanned partition table */
        ddev->uevent_suppress = 1;