mirror of https://gitee.com/openkylin/linux.git
md: raid5: avoid sector values going negative when testing reshape progress.
As sector_t in unsigned, we cannot afford to let 'safepos' etc go negative. So replace a -= b; by a -= min(b,a); Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
b6a9ce688f
commit
848b318236
|
@ -3811,13 +3811,13 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
|
|||
safepos = conf->reshape_safe;
|
||||
sector_div(safepos, data_disks);
|
||||
if (mddev->delta_disks < 0) {
|
||||
writepos -= reshape_sectors;
|
||||
writepos -= min(reshape_sectors, writepos);
|
||||
readpos += reshape_sectors;
|
||||
safepos += reshape_sectors;
|
||||
} else {
|
||||
writepos += reshape_sectors;
|
||||
readpos -= reshape_sectors;
|
||||
safepos -= reshape_sectors;
|
||||
readpos -= min(reshape_sectors, readpos);
|
||||
safepos -= min(reshape_sectors, safepos);
|
||||
}
|
||||
|
||||
/* 'writepos' is the most advanced device address we might write.
|
||||
|
|
Loading…
Reference in New Issue