From 634562688f63de56c18dbec4133ac9e833280247 Mon Sep 17 00:00:00 2001 From: Abdel Benamrouche Date: Fri, 25 Jul 2008 01:48:26 -0700 Subject: [PATCH] --- yaml --- r: 105995 b: refs/heads/master c: 04ebd4aee52b06a2c38127d9208546e5b96f3a19 h: refs/heads/master i: 105993: 1717edfba3149da1c64ebc61f1c4c6b2e8f5031b 105991: 640f5bb575635a5f0f1b7506bc34f25b355ff144 v: v3 --- [refs] | 2 +- trunk/block/ioctl.c | 5 +++-- trunk/fs/partitions/check.c | 10 ++++++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 9cf6e7651147..2fc14585e67c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d805dda412346225a50af2d399d958a4bc676c38 +refs/heads/master: 04ebd4aee52b06a2c38127d9208546e5b96f3a19 diff --git a/trunk/block/ioctl.c b/trunk/block/ioctl.c index 52d6385216ad..77185e5c026a 100644 --- a/trunk/block/ioctl.c +++ b/trunk/block/ioctl.c @@ -17,6 +17,7 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user long long start, length; int part; int i; + int err; if (!capable(CAP_SYS_ADMIN)) return -EACCES; @@ -61,9 +62,9 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user } } /* all seems OK */ - add_partition(disk, part, start, length, ADDPART_FLAG_NONE); + err = add_partition(disk, part, start, length, ADDPART_FLAG_NONE); mutex_unlock(&bdev->bd_mutex); - return 0; + return err; case BLKPG_DEL_PARTITION: if (!disk->part[part-1]) return -ENXIO; diff --git a/trunk/fs/partitions/check.c b/trunk/fs/partitions/check.c index 2e6413fbd2d8..7d6b34e201db 100644 --- a/trunk/fs/partitions/check.c +++ b/trunk/fs/partitions/check.c @@ -499,10 +499,16 @@ int rescan_partitions(struct gendisk *disk, struct block_device *bdev) if (!size) continue; if (from + size > get_capacity(disk)) { - printk(" %s: p%d exceeds device capacity\n", + printk(KERN_ERR " %s: p%d exceeds device capacity\n", disk->disk_name, p); + continue; + } + res = add_partition(disk, p, from, size, state->parts[p].flags); + if (res) { + printk(KERN_ERR " %s: p%d could not be added: %d\n", + disk->disk_name, p, -res); + continue; } - add_partition(disk, p, from, size, state->parts[p].flags); #ifdef CONFIG_BLK_DEV_MD if (state->parts[p].flags & ADDPART_FLAG_RAID) md_autodetect_dev(bdev->bd_dev+p);