mirror of
https://github.com/fail0verflow/switch-linux.git
synced 2025-05-04 02:34:21 -04:00
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
1 changed files with 3 additions and 3 deletions
|
@ -3811,13 +3811,13 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
|
||||||
safepos = conf->reshape_safe;
|
safepos = conf->reshape_safe;
|
||||||
sector_div(safepos, data_disks);
|
sector_div(safepos, data_disks);
|
||||||
if (mddev->delta_disks < 0) {
|
if (mddev->delta_disks < 0) {
|
||||||
writepos -= reshape_sectors;
|
writepos -= min(reshape_sectors, writepos);
|
||||||
readpos += reshape_sectors;
|
readpos += reshape_sectors;
|
||||||
safepos += reshape_sectors;
|
safepos += reshape_sectors;
|
||||||
} else {
|
} else {
|
||||||
writepos += reshape_sectors;
|
writepos += reshape_sectors;
|
||||||
readpos -= reshape_sectors;
|
readpos -= min(reshape_sectors, readpos);
|
||||||
safepos -= reshape_sectors;
|
safepos -= min(reshape_sectors, safepos);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 'writepos' is the most advanced device address we might write.
|
/* 'writepos' is the most advanced device address we might write.
|
||||||
|
|
Loading…
Add table
Reference in a new issue