X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fpartitions%2Fcheck.c;h=31cff785b3bdd993200ecf27906d210c390a27c1;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=ed308494390c5539dfc7a7ce37f0990bb3ec48b9;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/fs/partitions/check.c b/fs/partitions/check.c index ed3084943..31cff785b 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c @@ -73,6 +73,9 @@ static int (*check_part[])(struct parsed_partitions *, struct block_device *) = #ifdef CONFIG_EFI_PARTITION efi_partition, /* this must come before msdos */ #endif +#ifdef CONFIG_SGI_PARTITION + sgi_partition, +#endif #ifdef CONFIG_LDM_PARTITION ldm_partition, /* this must come before msdos */ #endif @@ -97,9 +100,6 @@ static int (*check_part[])(struct parsed_partitions *, struct block_device *) = #ifdef CONFIG_MAC_PARTITION mac_partition, #endif -#ifdef CONFIG_SGI_PARTITION - sgi_partition, -#endif #ifdef CONFIG_ULTRIX_PARTITION ultrix_partition, #endif @@ -325,10 +325,8 @@ static void disk_sysfs_symlinks(struct gendisk *disk) /* Not exported, helper to add_disk(). */ void register_disk(struct gendisk *disk) { - struct parsed_partitions *state; struct block_device *bdev; char *s; - int j; int err; strlcpy(disk->kobj.name,disk->disk_name,KOBJ_NAME_LEN); @@ -358,24 +356,9 @@ void register_disk(struct gendisk *disk) if (!bdev) return; + bdev->bd_invalidated = 1; if (blkdev_get(bdev, FMODE_READ, 0) < 0) return; - state = check_partition(disk, bdev); - if (state) { - for (j = 1; j < state->limit; j++) { - sector_t size = state->parts[j].size; - sector_t from = state->parts[j].from; - if (!size) - continue; - add_partition(disk, j, from, size); -#ifdef CONFIG_BLK_DEV_MD - if (!state->parts[j].flags) - continue; - md_autodetect_dev(bdev->bd_dev+j); -#endif - } - kfree(state); - } blkdev_put(bdev); } @@ -395,7 +378,7 @@ int rescan_partitions(struct gendisk *disk, struct block_device *bdev) if (disk->fops->revalidate_disk) disk->fops->revalidate_disk(disk); if (!get_capacity(disk) || !(state = check_partition(disk, bdev))) - return -EIO; + return 0; for (p = 1; p < state->limit; p++) { sector_t size = state->parts[p].size; sector_t from = state->parts[p].from;