diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-05-11 14:44:27 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-05-11 14:44:31 +0200 | 
| commit | 41fb454ebe6024f5c1e3b3cbc0abc0da762e7b51 (patch) | |
| tree | 51c50bcb67a5039448ddfa1869d7948cab1217e9 /drivers/md/raid5.c | |
| parent | 19c1a6f5764d787113fa323ffb18be7991208f82 (diff) | |
| parent | 091bf7624d1c90cec9e578a18529f615213ff847 (diff) | |
Merge commit 'v2.6.30-rc5' into core/iommu
Merge reason: core/iommu was on an .30-rc1 base,
              update it to .30-rc5 to refresh.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/md/raid5.c')
| -rw-r--r-- | drivers/md/raid5.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 3bbc6d64704..4616bc3a6e7 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -3845,6 +3845,7 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped  		wait_event(conf->wait_for_overlap,  			   atomic_read(&conf->reshape_stripes)==0);  		mddev->reshape_position = conf->reshape_progress; +		mddev->curr_resync_completed = mddev->curr_resync;  		conf->reshape_checkpoint = jiffies;  		set_bit(MD_CHANGE_DEVS, &mddev->flags);  		md_wakeup_thread(mddev->thread); @@ -3854,6 +3855,7 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped  		conf->reshape_safe = mddev->reshape_position;  		spin_unlock_irq(&conf->device_lock);  		wake_up(&conf->wait_for_overlap); +		sysfs_notify(&mddev->kobj, NULL, "sync_completed");  	}  	if (mddev->delta_disks < 0) { @@ -3938,11 +3940,13 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped  	 * then we need to write out the superblock.  	 */  	sector_nr += reshape_sectors; -	if (sector_nr >= mddev->resync_max) { +	if ((sector_nr - mddev->curr_resync_completed) * 2 +	    >= mddev->resync_max - mddev->curr_resync_completed) {  		/* Cannot proceed until we've updated the superblock... */  		wait_event(conf->wait_for_overlap,  			   atomic_read(&conf->reshape_stripes) == 0);  		mddev->reshape_position = conf->reshape_progress; +		mddev->curr_resync_completed = mddev->curr_resync;  		conf->reshape_checkpoint = jiffies;  		set_bit(MD_CHANGE_DEVS, &mddev->flags);  		md_wakeup_thread(mddev->thread); @@ -3953,6 +3957,7 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped  		conf->reshape_safe = mddev->reshape_position;  		spin_unlock_irq(&conf->device_lock);  		wake_up(&conf->wait_for_overlap); +		sysfs_notify(&mddev->kobj, NULL, "sync_completed");  	}  	return reshape_sectors;  }  | 
