diff options
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 7daa7b1e145f..8cbf9c9df1c3 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; |
@@ -3199,6 +3200,7 @@ static int do_md_run(mddev_t * mddev) | |||
3199 | 3200 | ||
3200 | mddev->changed = 1; | 3201 | mddev->changed = 1; |
3201 | md_new_event(mddev); | 3202 | md_new_event(mddev); |
3203 | kobject_uevent(&mddev->gendisk->kobj, KOBJ_CHANGE); | ||
3202 | return 0; | 3204 | return 0; |
3203 | } | 3205 | } |
3204 | 3206 | ||
@@ -4044,11 +4046,8 @@ static int update_size(mddev_t *mddev, unsigned long size) | |||
4044 | return -EBUSY; | 4046 | return -EBUSY; |
4045 | ITERATE_RDEV(mddev,rdev,tmp) { | 4047 | ITERATE_RDEV(mddev,rdev,tmp) { |
4046 | sector_t avail; | 4048 | sector_t avail; |
4047 | if (rdev->sb_offset > rdev->data_offset) | 4049 | avail = rdev->size * 2; |
4048 | avail = (rdev->sb_offset*2) - rdev->data_offset; | 4050 | |
4049 | else | ||
4050 | avail = get_capacity(rdev->bdev->bd_disk) | ||
4051 | - rdev->data_offset; | ||
4052 | if (fit && (size == 0 || size > avail/2)) | 4051 | if (fit && (size == 0 || size > avail/2)) |
4053 | size = avail/2; | 4052 | size = avail/2; |
4054 | if (avail < ((sector_t)size << 1)) | 4053 | if (avail < ((sector_t)size << 1)) |
@@ -4487,6 +4486,7 @@ static int md_thread(void * arg) | |||
4487 | * many dirty RAID5 blocks. | 4486 | * many dirty RAID5 blocks. |
4488 | */ | 4487 | */ |
4489 | 4488 | ||
4489 | current->flags |= PF_NOFREEZE; | ||
4490 | allow_signal(SIGKILL); | 4490 | allow_signal(SIGKILL); |
4491 | while (!kthread_should_stop()) { | 4491 | while (!kthread_should_stop()) { |
4492 | 4492 | ||
@@ -4503,7 +4503,6 @@ static int md_thread(void * arg) | |||
4503 | test_bit(THREAD_WAKEUP, &thread->flags) | 4503 | test_bit(THREAD_WAKEUP, &thread->flags) |
4504 | || kthread_should_stop(), | 4504 | || kthread_should_stop(), |
4505 | thread->timeout); | 4505 | thread->timeout); |
4506 | try_to_freeze(); | ||
4507 | 4506 | ||
4508 | clear_bit(THREAD_WAKEUP, &thread->flags); | 4507 | clear_bit(THREAD_WAKEUP, &thread->flags); |
4509 | 4508 | ||