diff options
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 7daa7b1e145f..50ab4a936e30 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -2003,6 +2003,7 @@ static mdk_rdev_t *md_import_device(dev_t newdev, int super_format, int super_mi | |||
2003 | kobject_init(&rdev->kobj); | 2003 | kobject_init(&rdev->kobj); |
2004 | 2004 | ||
2005 | rdev->desc_nr = -1; | 2005 | rdev->desc_nr = -1; |
2006 | rdev->saved_raid_disk = -1; | ||
2006 | rdev->flags = 0; | 2007 | rdev->flags = 0; |
2007 | rdev->data_offset = 0; | 2008 | rdev->data_offset = 0; |
2008 | rdev->sb_events = 0; | 2009 | rdev->sb_events = 0; |
@@ -4044,11 +4045,8 @@ static int update_size(mddev_t *mddev, unsigned long size) | |||
4044 | return -EBUSY; | 4045 | return -EBUSY; |
4045 | ITERATE_RDEV(mddev,rdev,tmp) { | 4046 | ITERATE_RDEV(mddev,rdev,tmp) { |
4046 | sector_t avail; | 4047 | sector_t avail; |
4047 | if (rdev->sb_offset > rdev->data_offset) | 4048 | avail = rdev->size * 2; |
4048 | avail = (rdev->sb_offset*2) - rdev->data_offset; | 4049 | |
4049 | else | ||
4050 | avail = get_capacity(rdev->bdev->bd_disk) | ||
4051 | - rdev->data_offset; | ||
4052 | if (fit && (size == 0 || size > avail/2)) | 4050 | if (fit && (size == 0 || size > avail/2)) |
4053 | size = avail/2; | 4051 | size = avail/2; |
4054 | if (avail < ((sector_t)size << 1)) | 4052 | if (avail < ((sector_t)size << 1)) |