mirror of https://gitee.com/openkylin/linux.git
md: convert conf->chunk_size and conf->prev_chunk to sectors.
This kills some more shifts. Signed-off-by: Andre Noll <maan@systemlinux.org> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
664e7c413f
commit
09c9e5fa1b
|
@ -1274,8 +1274,8 @@ static sector_t raid5_compute_sector(raid5_conf_t *conf, sector_t r_sector,
|
||||||
sector_t new_sector;
|
sector_t new_sector;
|
||||||
int algorithm = previous ? conf->prev_algo
|
int algorithm = previous ? conf->prev_algo
|
||||||
: conf->algorithm;
|
: conf->algorithm;
|
||||||
int sectors_per_chunk = previous ? (conf->prev_chunk >> 9)
|
int sectors_per_chunk = previous ? conf->prev_chunk_sectors
|
||||||
: (conf->chunk_size >> 9);
|
: conf->chunk_sectors;
|
||||||
int raid_disks = previous ? conf->previous_raid_disks
|
int raid_disks = previous ? conf->previous_raid_disks
|
||||||
: conf->raid_disks;
|
: conf->raid_disks;
|
||||||
int data_disks = raid_disks - conf->max_degraded;
|
int data_disks = raid_disks - conf->max_degraded;
|
||||||
|
@ -1480,8 +1480,8 @@ static sector_t compute_blocknr(struct stripe_head *sh, int i, int previous)
|
||||||
int raid_disks = sh->disks;
|
int raid_disks = sh->disks;
|
||||||
int data_disks = raid_disks - conf->max_degraded;
|
int data_disks = raid_disks - conf->max_degraded;
|
||||||
sector_t new_sector = sh->sector, check;
|
sector_t new_sector = sh->sector, check;
|
||||||
int sectors_per_chunk = previous ? (conf->prev_chunk >> 9)
|
int sectors_per_chunk = previous ? conf->prev_chunk_sectors
|
||||||
: (conf->chunk_size >> 9);
|
: conf->chunk_sectors;
|
||||||
int algorithm = previous ? conf->prev_algo
|
int algorithm = previous ? conf->prev_algo
|
||||||
: conf->algorithm;
|
: conf->algorithm;
|
||||||
sector_t stripe;
|
sector_t stripe;
|
||||||
|
@ -1997,8 +1997,7 @@ static void stripe_set_idx(sector_t stripe, raid5_conf_t *conf, int previous,
|
||||||
struct stripe_head *sh)
|
struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
int sectors_per_chunk =
|
int sectors_per_chunk =
|
||||||
previous ? (conf->prev_chunk >> 9)
|
previous ? conf->prev_chunk_sectors : conf->chunk_sectors;
|
||||||
: (conf->chunk_size >> 9);
|
|
||||||
int dd_idx;
|
int dd_idx;
|
||||||
int chunk_offset = sector_div(stripe, sectors_per_chunk);
|
int chunk_offset = sector_div(stripe, sectors_per_chunk);
|
||||||
int disks = previous ? conf->previous_raid_disks : conf->raid_disks;
|
int disks = previous ? conf->previous_raid_disks : conf->raid_disks;
|
||||||
|
@ -3917,7 +3916,7 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
|
||||||
1, &dd_idx, NULL);
|
1, &dd_idx, NULL);
|
||||||
last_sector =
|
last_sector =
|
||||||
raid5_compute_sector(conf, ((stripe_addr+reshape_sectors)
|
raid5_compute_sector(conf, ((stripe_addr+reshape_sectors)
|
||||||
*(new_data_disks) - 1),
|
* new_data_disks - 1),
|
||||||
1, &dd_idx, NULL);
|
1, &dd_idx, NULL);
|
||||||
if (last_sector >= mddev->dev_sectors)
|
if (last_sector >= mddev->dev_sectors)
|
||||||
last_sector = mddev->dev_sectors - 1;
|
last_sector = mddev->dev_sectors - 1;
|
||||||
|
@ -4403,7 +4402,7 @@ static raid5_conf_t *setup_conf(mddev_t *mddev)
|
||||||
conf->fullsync = 1;
|
conf->fullsync = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
conf->chunk_size = mddev->new_chunk_sectors << 9;
|
conf->chunk_sectors = mddev->new_chunk_sectors;
|
||||||
conf->level = mddev->new_level;
|
conf->level = mddev->new_level;
|
||||||
if (conf->level == 6)
|
if (conf->level == 6)
|
||||||
conf->max_degraded = 2;
|
conf->max_degraded = 2;
|
||||||
|
@ -4413,7 +4412,7 @@ static raid5_conf_t *setup_conf(mddev_t *mddev)
|
||||||
conf->max_nr_stripes = NR_STRIPES;
|
conf->max_nr_stripes = NR_STRIPES;
|
||||||
conf->reshape_progress = mddev->reshape_position;
|
conf->reshape_progress = mddev->reshape_position;
|
||||||
if (conf->reshape_progress != MaxSector) {
|
if (conf->reshape_progress != MaxSector) {
|
||||||
conf->prev_chunk = mddev->chunk_sectors << 9;
|
conf->prev_chunk_sectors = mddev->chunk_sectors;
|
||||||
conf->prev_algo = mddev->layout;
|
conf->prev_algo = mddev->layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4931,8 +4930,8 @@ static int raid5_start_reshape(mddev_t *mddev)
|
||||||
spin_lock_irq(&conf->device_lock);
|
spin_lock_irq(&conf->device_lock);
|
||||||
conf->previous_raid_disks = conf->raid_disks;
|
conf->previous_raid_disks = conf->raid_disks;
|
||||||
conf->raid_disks += mddev->delta_disks;
|
conf->raid_disks += mddev->delta_disks;
|
||||||
conf->prev_chunk = conf->chunk_size;
|
conf->prev_chunk_sectors = conf->chunk_sectors;
|
||||||
conf->chunk_size = mddev->new_chunk_sectors << 9;
|
conf->chunk_sectors = mddev->new_chunk_sectors;
|
||||||
conf->prev_algo = conf->algorithm;
|
conf->prev_algo = conf->algorithm;
|
||||||
conf->algorithm = mddev->new_layout;
|
conf->algorithm = mddev->new_layout;
|
||||||
if (mddev->delta_disks < 0)
|
if (mddev->delta_disks < 0)
|
||||||
|
@ -5014,7 +5013,7 @@ static void end_reshape(raid5_conf_t *conf)
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
int data_disks = conf->raid_disks - conf->max_degraded;
|
int data_disks = conf->raid_disks - conf->max_degraded;
|
||||||
int stripe = data_disks * (conf->chunk_size
|
int stripe = data_disks * ((conf->chunk_sectors << 9)
|
||||||
/ PAGE_SIZE);
|
/ PAGE_SIZE);
|
||||||
if (conf->mddev->queue->backing_dev_info.ra_pages < 2 * stripe)
|
if (conf->mddev->queue->backing_dev_info.ra_pages < 2 * stripe)
|
||||||
conf->mddev->queue->backing_dev_info.ra_pages = 2 * stripe;
|
conf->mddev->queue->backing_dev_info.ra_pages = 2 * stripe;
|
||||||
|
@ -5059,7 +5058,7 @@ static void raid5_finish_reshape(mddev_t *mddev)
|
||||||
raid5_remove_disk(mddev, d);
|
raid5_remove_disk(mddev, d);
|
||||||
}
|
}
|
||||||
mddev->layout = conf->algorithm;
|
mddev->layout = conf->algorithm;
|
||||||
mddev->chunk_sectors = conf->chunk_size >> 9;
|
mddev->chunk_sectors = conf->chunk_sectors;
|
||||||
mddev->reshape_position = MaxSector;
|
mddev->reshape_position = MaxSector;
|
||||||
mddev->delta_disks = 0;
|
mddev->delta_disks = 0;
|
||||||
}
|
}
|
||||||
|
@ -5187,7 +5186,7 @@ static int raid5_reconfig(mddev_t *mddev, int new_layout, int new_chunk)
|
||||||
mddev->layout = mddev->new_layout = new_layout;
|
mddev->layout = mddev->new_layout = new_layout;
|
||||||
}
|
}
|
||||||
if (new_chunk > 0) {
|
if (new_chunk > 0) {
|
||||||
conf->chunk_size = new_chunk;
|
conf->chunk_sectors = new_chunk >> 9;
|
||||||
mddev->new_chunk_sectors = new_chunk >> 9;
|
mddev->new_chunk_sectors = new_chunk >> 9;
|
||||||
mddev->chunk_sectors = new_chunk >> 9;
|
mddev->chunk_sectors = new_chunk >> 9;
|
||||||
}
|
}
|
||||||
|
|
|
@ -334,7 +334,8 @@ struct raid5_private_data {
|
||||||
struct hlist_head *stripe_hashtbl;
|
struct hlist_head *stripe_hashtbl;
|
||||||
mddev_t *mddev;
|
mddev_t *mddev;
|
||||||
struct disk_info *spare;
|
struct disk_info *spare;
|
||||||
int chunk_size, level, algorithm;
|
int chunk_sectors;
|
||||||
|
int level, algorithm;
|
||||||
int max_degraded;
|
int max_degraded;
|
||||||
int raid_disks;
|
int raid_disks;
|
||||||
int max_nr_stripes;
|
int max_nr_stripes;
|
||||||
|
@ -350,7 +351,8 @@ struct raid5_private_data {
|
||||||
*/
|
*/
|
||||||
sector_t reshape_safe;
|
sector_t reshape_safe;
|
||||||
int previous_raid_disks;
|
int previous_raid_disks;
|
||||||
int prev_chunk, prev_algo;
|
int prev_chunk_sectors;
|
||||||
|
int prev_algo;
|
||||||
short generation; /* increments with every reshape */
|
short generation; /* increments with every reshape */
|
||||||
unsigned long reshape_checkpoint; /* Time we last updated
|
unsigned long reshape_checkpoint; /* Time we last updated
|
||||||
* metadata */
|
* metadata */
|
||||||
|
|
Loading…
Reference in New Issue