mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
md/raid5: typedef removal: raid5_conf_t -> struct r5conf
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
e809636047
commit
d1688a6d55
3 changed files with 84 additions and 86 deletions
|
@ -1097,7 +1097,7 @@ static int raid_status(struct dm_target *ti, status_type_t type,
|
||||||
rs->md.bitmap_info.max_write_behind);
|
rs->md.bitmap_info.max_write_behind);
|
||||||
|
|
||||||
if (rs->print_flags & DMPF_STRIPE_CACHE) {
|
if (rs->print_flags & DMPF_STRIPE_CACHE) {
|
||||||
raid5_conf_t *conf = rs->md.private;
|
struct r5conf *conf = rs->md.private;
|
||||||
|
|
||||||
/* convert from kiB to sectors */
|
/* convert from kiB to sectors */
|
||||||
DMEMIT(" stripe_cache %d",
|
DMEMIT(" stripe_cache %d",
|
||||||
|
@ -1146,7 +1146,7 @@ static void raid_io_hints(struct dm_target *ti, struct queue_limits *limits)
|
||||||
{
|
{
|
||||||
struct raid_set *rs = ti->private;
|
struct raid_set *rs = ti->private;
|
||||||
unsigned chunk_size = rs->md.chunk_sectors << 9;
|
unsigned chunk_size = rs->md.chunk_sectors << 9;
|
||||||
raid5_conf_t *conf = rs->md.private;
|
struct r5conf *conf = rs->md.private;
|
||||||
|
|
||||||
blk_limits_io_min(limits, chunk_size);
|
blk_limits_io_min(limits, chunk_size);
|
||||||
blk_limits_io_opt(limits, chunk_size * (conf->raid_disks - conf->max_degraded));
|
blk_limits_io_opt(limits, chunk_size * (conf->raid_disks - conf->max_degraded));
|
||||||
|
|
|
@ -70,7 +70,7 @@
|
||||||
#define NR_HASH (PAGE_SIZE / sizeof(struct hlist_head))
|
#define NR_HASH (PAGE_SIZE / sizeof(struct hlist_head))
|
||||||
#define HASH_MASK (NR_HASH - 1)
|
#define HASH_MASK (NR_HASH - 1)
|
||||||
|
|
||||||
static inline struct hlist_head *stripe_hash(raid5_conf_t *conf, sector_t sect)
|
static inline struct hlist_head *stripe_hash(struct r5conf *conf, sector_t sect)
|
||||||
{
|
{
|
||||||
int hash = (sect >> STRIPE_SHIFT) & HASH_MASK;
|
int hash = (sect >> STRIPE_SHIFT) & HASH_MASK;
|
||||||
return &conf->stripe_hashtbl[hash];
|
return &conf->stripe_hashtbl[hash];
|
||||||
|
@ -180,7 +180,7 @@ static void return_io(struct bio *return_bi)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_raid5_conf (raid5_conf_t *conf);
|
static void print_raid5_conf (struct r5conf *conf);
|
||||||
|
|
||||||
static int stripe_operations_active(struct stripe_head *sh)
|
static int stripe_operations_active(struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
|
@ -189,7 +189,7 @@ static int stripe_operations_active(struct stripe_head *sh)
|
||||||
test_bit(STRIPE_COMPUTE_RUN, &sh->state);
|
test_bit(STRIPE_COMPUTE_RUN, &sh->state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __release_stripe(raid5_conf_t *conf, struct stripe_head *sh)
|
static void __release_stripe(struct r5conf *conf, struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
if (atomic_dec_and_test(&sh->count)) {
|
if (atomic_dec_and_test(&sh->count)) {
|
||||||
BUG_ON(!list_empty(&sh->lru));
|
BUG_ON(!list_empty(&sh->lru));
|
||||||
|
@ -225,7 +225,7 @@ static void __release_stripe(raid5_conf_t *conf, struct stripe_head *sh)
|
||||||
|
|
||||||
static void release_stripe(struct stripe_head *sh)
|
static void release_stripe(struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_irqsave(&conf->device_lock, flags);
|
spin_lock_irqsave(&conf->device_lock, flags);
|
||||||
|
@ -241,7 +241,7 @@ static inline void remove_hash(struct stripe_head *sh)
|
||||||
hlist_del_init(&sh->hash);
|
hlist_del_init(&sh->hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void insert_hash(raid5_conf_t *conf, struct stripe_head *sh)
|
static inline void insert_hash(struct r5conf *conf, struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
struct hlist_head *hp = stripe_hash(conf, sh->sector);
|
struct hlist_head *hp = stripe_hash(conf, sh->sector);
|
||||||
|
|
||||||
|
@ -253,7 +253,7 @@ static inline void insert_hash(raid5_conf_t *conf, struct stripe_head *sh)
|
||||||
|
|
||||||
|
|
||||||
/* find an idle stripe, make sure it is unhashed, and return it. */
|
/* find an idle stripe, make sure it is unhashed, and return it. */
|
||||||
static struct stripe_head *get_free_stripe(raid5_conf_t *conf)
|
static struct stripe_head *get_free_stripe(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh = NULL;
|
struct stripe_head *sh = NULL;
|
||||||
struct list_head *first;
|
struct list_head *first;
|
||||||
|
@ -301,12 +301,12 @@ static int grow_buffers(struct stripe_head *sh)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void raid5_build_block(struct stripe_head *sh, int i, int previous);
|
static void raid5_build_block(struct stripe_head *sh, int i, int previous);
|
||||||
static void stripe_set_idx(sector_t stripe, raid5_conf_t *conf, int previous,
|
static void stripe_set_idx(sector_t stripe, struct r5conf *conf, int previous,
|
||||||
struct stripe_head *sh);
|
struct stripe_head *sh);
|
||||||
|
|
||||||
static void init_stripe(struct stripe_head *sh, sector_t sector, int previous)
|
static void init_stripe(struct stripe_head *sh, sector_t sector, int previous)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
BUG_ON(atomic_read(&sh->count) != 0);
|
BUG_ON(atomic_read(&sh->count) != 0);
|
||||||
|
@ -342,7 +342,7 @@ static void init_stripe(struct stripe_head *sh, sector_t sector, int previous)
|
||||||
insert_hash(conf, sh);
|
insert_hash(conf, sh);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct stripe_head *__find_stripe(raid5_conf_t *conf, sector_t sector,
|
static struct stripe_head *__find_stripe(struct r5conf *conf, sector_t sector,
|
||||||
short generation)
|
short generation)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh;
|
struct stripe_head *sh;
|
||||||
|
@ -369,7 +369,7 @@ static struct stripe_head *__find_stripe(raid5_conf_t *conf, sector_t sector,
|
||||||
* of the two sections, and some non-in_sync devices may
|
* of the two sections, and some non-in_sync devices may
|
||||||
* be insync in the section most affected by failed devices.
|
* be insync in the section most affected by failed devices.
|
||||||
*/
|
*/
|
||||||
static int has_failed(raid5_conf_t *conf)
|
static int has_failed(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
int degraded;
|
int degraded;
|
||||||
int i;
|
int i;
|
||||||
|
@ -424,7 +424,7 @@ static int has_failed(raid5_conf_t *conf)
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct stripe_head *
|
static struct stripe_head *
|
||||||
get_active_stripe(raid5_conf_t *conf, sector_t sector,
|
get_active_stripe(struct r5conf *conf, sector_t sector,
|
||||||
int previous, int noblock, int noquiesce)
|
int previous, int noblock, int noquiesce)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh;
|
struct stripe_head *sh;
|
||||||
|
@ -484,7 +484,7 @@ raid5_end_write_request(struct bio *bi, int error);
|
||||||
|
|
||||||
static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s)
|
static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int i, disks = sh->disks;
|
int i, disks = sh->disks;
|
||||||
|
|
||||||
might_sleep();
|
might_sleep();
|
||||||
|
@ -643,7 +643,7 @@ static void ops_complete_biofill(void *stripe_head_ref)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh = stripe_head_ref;
|
struct stripe_head *sh = stripe_head_ref;
|
||||||
struct bio *return_bi = NULL;
|
struct bio *return_bi = NULL;
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
pr_debug("%s: stripe %llu\n", __func__,
|
pr_debug("%s: stripe %llu\n", __func__,
|
||||||
|
@ -688,7 +688,7 @@ static void ops_complete_biofill(void *stripe_head_ref)
|
||||||
static void ops_run_biofill(struct stripe_head *sh)
|
static void ops_run_biofill(struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
struct dma_async_tx_descriptor *tx = NULL;
|
struct dma_async_tx_descriptor *tx = NULL;
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
struct async_submit_ctl submit;
|
struct async_submit_ctl submit;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1239,7 +1239,7 @@ static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
|
||||||
{
|
{
|
||||||
int overlap_clear = 0, i, disks = sh->disks;
|
int overlap_clear = 0, i, disks = sh->disks;
|
||||||
struct dma_async_tx_descriptor *tx = NULL;
|
struct dma_async_tx_descriptor *tx = NULL;
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int level = conf->level;
|
int level = conf->level;
|
||||||
struct raid5_percpu *percpu;
|
struct raid5_percpu *percpu;
|
||||||
unsigned long cpu;
|
unsigned long cpu;
|
||||||
|
@ -1330,7 +1330,7 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
|
||||||
#define raid_run_ops __raid_run_ops
|
#define raid_run_ops __raid_run_ops
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int grow_one_stripe(raid5_conf_t *conf)
|
static int grow_one_stripe(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh;
|
struct stripe_head *sh;
|
||||||
sh = kmem_cache_zalloc(conf->slab_cache, GFP_KERNEL);
|
sh = kmem_cache_zalloc(conf->slab_cache, GFP_KERNEL);
|
||||||
|
@ -1355,7 +1355,7 @@ static int grow_one_stripe(raid5_conf_t *conf)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int grow_stripes(raid5_conf_t *conf, int num)
|
static int grow_stripes(struct r5conf *conf, int num)
|
||||||
{
|
{
|
||||||
struct kmem_cache *sc;
|
struct kmem_cache *sc;
|
||||||
int devs = max(conf->raid_disks, conf->previous_raid_disks);
|
int devs = max(conf->raid_disks, conf->previous_raid_disks);
|
||||||
|
@ -1404,7 +1404,7 @@ static size_t scribble_len(int num)
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int resize_stripes(raid5_conf_t *conf, int newsize)
|
static int resize_stripes(struct r5conf *conf, int newsize)
|
||||||
{
|
{
|
||||||
/* Make all the stripes able to hold 'newsize' devices.
|
/* Make all the stripes able to hold 'newsize' devices.
|
||||||
* New slots in each stripe get 'page' set to a new page.
|
* New slots in each stripe get 'page' set to a new page.
|
||||||
|
@ -1549,7 +1549,7 @@ static int resize_stripes(raid5_conf_t *conf, int newsize)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int drop_one_stripe(raid5_conf_t *conf)
|
static int drop_one_stripe(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh;
|
struct stripe_head *sh;
|
||||||
|
|
||||||
|
@ -1565,7 +1565,7 @@ static int drop_one_stripe(raid5_conf_t *conf)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void shrink_stripes(raid5_conf_t *conf)
|
static void shrink_stripes(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
while (drop_one_stripe(conf))
|
while (drop_one_stripe(conf))
|
||||||
;
|
;
|
||||||
|
@ -1578,7 +1578,7 @@ static void shrink_stripes(raid5_conf_t *conf)
|
||||||
static void raid5_end_read_request(struct bio * bi, int error)
|
static void raid5_end_read_request(struct bio * bi, int error)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh = bi->bi_private;
|
struct stripe_head *sh = bi->bi_private;
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int disks = sh->disks, i;
|
int disks = sh->disks, i;
|
||||||
int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags);
|
int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags);
|
||||||
char b[BDEVNAME_SIZE];
|
char b[BDEVNAME_SIZE];
|
||||||
|
@ -1665,7 +1665,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
|
||||||
static void raid5_end_write_request(struct bio *bi, int error)
|
static void raid5_end_write_request(struct bio *bi, int error)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh = bi->bi_private;
|
struct stripe_head *sh = bi->bi_private;
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int disks = sh->disks, i;
|
int disks = sh->disks, i;
|
||||||
int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags);
|
int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags);
|
||||||
sector_t first_bad;
|
sector_t first_bad;
|
||||||
|
@ -1722,7 +1722,7 @@ static void raid5_build_block(struct stripe_head *sh, int i, int previous)
|
||||||
static void error(struct mddev *mddev, struct md_rdev *rdev)
|
static void error(struct mddev *mddev, struct md_rdev *rdev)
|
||||||
{
|
{
|
||||||
char b[BDEVNAME_SIZE];
|
char b[BDEVNAME_SIZE];
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
pr_debug("raid456: error called\n");
|
pr_debug("raid456: error called\n");
|
||||||
|
|
||||||
if (test_and_clear_bit(In_sync, &rdev->flags)) {
|
if (test_and_clear_bit(In_sync, &rdev->flags)) {
|
||||||
|
@ -1751,7 +1751,7 @@ static void error(struct mddev *mddev, struct md_rdev *rdev)
|
||||||
* Input: a 'big' sector number,
|
* Input: a 'big' sector number,
|
||||||
* Output: index of the data and parity disk, and the sector # in them.
|
* Output: index of the data and parity disk, and the sector # in them.
|
||||||
*/
|
*/
|
||||||
static sector_t raid5_compute_sector(raid5_conf_t *conf, sector_t r_sector,
|
static sector_t raid5_compute_sector(struct r5conf *conf, sector_t r_sector,
|
||||||
int previous, int *dd_idx,
|
int previous, int *dd_idx,
|
||||||
struct stripe_head *sh)
|
struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
|
@ -1956,7 +1956,7 @@ static sector_t raid5_compute_sector(raid5_conf_t *conf, sector_t r_sector,
|
||||||
|
|
||||||
static sector_t compute_blocknr(struct stripe_head *sh, int i, int previous)
|
static sector_t compute_blocknr(struct stripe_head *sh, int i, int previous)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
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;
|
||||||
|
@ -2081,7 +2081,7 @@ schedule_reconstruction(struct stripe_head *sh, struct stripe_head_state *s,
|
||||||
int rcw, int expand)
|
int rcw, int expand)
|
||||||
{
|
{
|
||||||
int i, pd_idx = sh->pd_idx, disks = sh->disks;
|
int i, pd_idx = sh->pd_idx, disks = sh->disks;
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int level = conf->level;
|
int level = conf->level;
|
||||||
|
|
||||||
if (rcw) {
|
if (rcw) {
|
||||||
|
@ -2166,7 +2166,7 @@ schedule_reconstruction(struct stripe_head *sh, struct stripe_head_state *s,
|
||||||
static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, int forwrite)
|
static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, int forwrite)
|
||||||
{
|
{
|
||||||
struct bio **bip;
|
struct bio **bip;
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int firstwrite=0;
|
int firstwrite=0;
|
||||||
|
|
||||||
pr_debug("adding bi b#%llu to stripe s#%llu\n",
|
pr_debug("adding bi b#%llu to stripe s#%llu\n",
|
||||||
|
@ -2228,9 +2228,9 @@ static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, in
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void end_reshape(raid5_conf_t *conf);
|
static void end_reshape(struct r5conf *conf);
|
||||||
|
|
||||||
static void stripe_set_idx(sector_t stripe, raid5_conf_t *conf, int previous,
|
static void stripe_set_idx(sector_t stripe, struct r5conf *conf, int previous,
|
||||||
struct stripe_head *sh)
|
struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
int sectors_per_chunk =
|
int sectors_per_chunk =
|
||||||
|
@ -2247,7 +2247,7 @@ static void stripe_set_idx(sector_t stripe, raid5_conf_t *conf, int previous,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handle_failed_stripe(raid5_conf_t *conf, struct stripe_head *sh,
|
handle_failed_stripe(struct r5conf *conf, struct stripe_head *sh,
|
||||||
struct stripe_head_state *s, int disks,
|
struct stripe_head_state *s, int disks,
|
||||||
struct bio **return_bi)
|
struct bio **return_bi)
|
||||||
{
|
{
|
||||||
|
@ -2352,7 +2352,7 @@ handle_failed_stripe(raid5_conf_t *conf, struct stripe_head *sh,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handle_failed_sync(raid5_conf_t *conf, struct stripe_head *sh,
|
handle_failed_sync(struct r5conf *conf, struct stripe_head *sh,
|
||||||
struct stripe_head_state *s)
|
struct stripe_head_state *s)
|
||||||
{
|
{
|
||||||
int abort = 0;
|
int abort = 0;
|
||||||
|
@ -2501,7 +2501,7 @@ static void handle_stripe_fill(struct stripe_head *sh,
|
||||||
* Note that if we 'wrote' to a failed drive, it will be UPTODATE, but
|
* Note that if we 'wrote' to a failed drive, it will be UPTODATE, but
|
||||||
* never LOCKED, so we don't need to test 'failed' directly.
|
* never LOCKED, so we don't need to test 'failed' directly.
|
||||||
*/
|
*/
|
||||||
static void handle_stripe_clean_event(raid5_conf_t *conf,
|
static void handle_stripe_clean_event(struct r5conf *conf,
|
||||||
struct stripe_head *sh, int disks, struct bio **return_bi)
|
struct stripe_head *sh, int disks, struct bio **return_bi)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -2546,7 +2546,7 @@ static void handle_stripe_clean_event(raid5_conf_t *conf,
|
||||||
md_wakeup_thread(conf->mddev->thread);
|
md_wakeup_thread(conf->mddev->thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_stripe_dirtying(raid5_conf_t *conf,
|
static void handle_stripe_dirtying(struct r5conf *conf,
|
||||||
struct stripe_head *sh,
|
struct stripe_head *sh,
|
||||||
struct stripe_head_state *s,
|
struct stripe_head_state *s,
|
||||||
int disks)
|
int disks)
|
||||||
|
@ -2648,7 +2648,7 @@ static void handle_stripe_dirtying(raid5_conf_t *conf,
|
||||||
schedule_reconstruction(sh, s, rcw == 0, 0);
|
schedule_reconstruction(sh, s, rcw == 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_parity_checks5(raid5_conf_t *conf, struct stripe_head *sh,
|
static void handle_parity_checks5(struct r5conf *conf, struct stripe_head *sh,
|
||||||
struct stripe_head_state *s, int disks)
|
struct stripe_head_state *s, int disks)
|
||||||
{
|
{
|
||||||
struct r5dev *dev = NULL;
|
struct r5dev *dev = NULL;
|
||||||
|
@ -2736,7 +2736,7 @@ static void handle_parity_checks5(raid5_conf_t *conf, struct stripe_head *sh,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void handle_parity_checks6(raid5_conf_t *conf, struct stripe_head *sh,
|
static void handle_parity_checks6(struct r5conf *conf, struct stripe_head *sh,
|
||||||
struct stripe_head_state *s,
|
struct stripe_head_state *s,
|
||||||
int disks)
|
int disks)
|
||||||
{
|
{
|
||||||
|
@ -2899,7 +2899,7 @@ static void handle_parity_checks6(raid5_conf_t *conf, struct stripe_head *sh,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_stripe_expansion(raid5_conf_t *conf, struct stripe_head *sh)
|
static void handle_stripe_expansion(struct r5conf *conf, struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -2978,7 +2978,7 @@ static void handle_stripe_expansion(raid5_conf_t *conf, struct stripe_head *sh)
|
||||||
|
|
||||||
static void analyse_stripe(struct stripe_head *sh, struct stripe_head_state *s)
|
static void analyse_stripe(struct stripe_head *sh, struct stripe_head_state *s)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int disks = sh->disks;
|
int disks = sh->disks;
|
||||||
struct r5dev *dev;
|
struct r5dev *dev;
|
||||||
int i;
|
int i;
|
||||||
|
@ -3102,7 +3102,7 @@ static void analyse_stripe(struct stripe_head *sh, struct stripe_head_state *s)
|
||||||
static void handle_stripe(struct stripe_head *sh)
|
static void handle_stripe(struct stripe_head *sh)
|
||||||
{
|
{
|
||||||
struct stripe_head_state s;
|
struct stripe_head_state s;
|
||||||
raid5_conf_t *conf = sh->raid_conf;
|
struct r5conf *conf = sh->raid_conf;
|
||||||
int i;
|
int i;
|
||||||
int prexor;
|
int prexor;
|
||||||
int disks = sh->disks;
|
int disks = sh->disks;
|
||||||
|
@ -3373,7 +3373,7 @@ finish:
|
||||||
clear_bit(STRIPE_ACTIVE, &sh->state);
|
clear_bit(STRIPE_ACTIVE, &sh->state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void raid5_activate_delayed(raid5_conf_t *conf)
|
static void raid5_activate_delayed(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
if (atomic_read(&conf->preread_active_stripes) < IO_THRESHOLD) {
|
if (atomic_read(&conf->preread_active_stripes) < IO_THRESHOLD) {
|
||||||
while (!list_empty(&conf->delayed_list)) {
|
while (!list_empty(&conf->delayed_list)) {
|
||||||
|
@ -3389,7 +3389,7 @@ static void raid5_activate_delayed(raid5_conf_t *conf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void activate_bit_delay(raid5_conf_t *conf)
|
static void activate_bit_delay(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
/* device_lock is held */
|
/* device_lock is held */
|
||||||
struct list_head head;
|
struct list_head head;
|
||||||
|
@ -3405,7 +3405,7 @@ static void activate_bit_delay(raid5_conf_t *conf)
|
||||||
|
|
||||||
int md_raid5_congested(struct mddev *mddev, int bits)
|
int md_raid5_congested(struct mddev *mddev, int bits)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
|
|
||||||
/* No difference between reads and writes. Just check
|
/* No difference between reads and writes. Just check
|
||||||
* how busy the stripe_cache is
|
* how busy the stripe_cache is
|
||||||
|
@ -3473,7 +3473,7 @@ static int in_chunk_boundary(struct mddev *mddev, struct bio *bio)
|
||||||
* add bio to the retry LIFO ( in O(1) ... we are in interrupt )
|
* add bio to the retry LIFO ( in O(1) ... we are in interrupt )
|
||||||
* later sampled by raid5d.
|
* later sampled by raid5d.
|
||||||
*/
|
*/
|
||||||
static void add_bio_to_retry(struct bio *bi,raid5_conf_t *conf)
|
static void add_bio_to_retry(struct bio *bi,struct r5conf *conf)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
@ -3487,7 +3487,7 @@ static void add_bio_to_retry(struct bio *bi,raid5_conf_t *conf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct bio *remove_bio_from_retry(raid5_conf_t *conf)
|
static struct bio *remove_bio_from_retry(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
struct bio *bi;
|
struct bio *bi;
|
||||||
|
|
||||||
|
@ -3521,7 +3521,7 @@ static void raid5_align_endio(struct bio *bi, int error)
|
||||||
{
|
{
|
||||||
struct bio* raid_bi = bi->bi_private;
|
struct bio* raid_bi = bi->bi_private;
|
||||||
struct mddev *mddev;
|
struct mddev *mddev;
|
||||||
raid5_conf_t *conf;
|
struct r5conf *conf;
|
||||||
int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags);
|
int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags);
|
||||||
struct md_rdev *rdev;
|
struct md_rdev *rdev;
|
||||||
|
|
||||||
|
@ -3569,7 +3569,7 @@ static int bio_fits_rdev(struct bio *bi)
|
||||||
|
|
||||||
static int chunk_aligned_read(struct mddev *mddev, struct bio * raid_bio)
|
static int chunk_aligned_read(struct mddev *mddev, struct bio * raid_bio)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
int dd_idx;
|
int dd_idx;
|
||||||
struct bio* align_bi;
|
struct bio* align_bi;
|
||||||
struct md_rdev *rdev;
|
struct md_rdev *rdev;
|
||||||
|
@ -3645,7 +3645,7 @@ static int chunk_aligned_read(struct mddev *mddev, struct bio * raid_bio)
|
||||||
* head of the hold_list has changed, i.e. the head was promoted to the
|
* head of the hold_list has changed, i.e. the head was promoted to the
|
||||||
* handle_list.
|
* handle_list.
|
||||||
*/
|
*/
|
||||||
static struct stripe_head *__get_priority_stripe(raid5_conf_t *conf)
|
static struct stripe_head *__get_priority_stripe(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh;
|
struct stripe_head *sh;
|
||||||
|
|
||||||
|
@ -3690,7 +3690,7 @@ static struct stripe_head *__get_priority_stripe(raid5_conf_t *conf)
|
||||||
|
|
||||||
static int make_request(struct mddev *mddev, struct bio * bi)
|
static int make_request(struct mddev *mddev, struct bio * bi)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
int dd_idx;
|
int dd_idx;
|
||||||
sector_t new_sector;
|
sector_t new_sector;
|
||||||
sector_t logical_sector, last_sector;
|
sector_t logical_sector, last_sector;
|
||||||
|
@ -3861,7 +3861,7 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr, int *sk
|
||||||
* As the reads complete, handle_stripe will copy the data
|
* As the reads complete, handle_stripe will copy the data
|
||||||
* into the destination stripe and release that stripe.
|
* into the destination stripe and release that stripe.
|
||||||
*/
|
*/
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
struct stripe_head *sh;
|
struct stripe_head *sh;
|
||||||
sector_t first_sector, last_sector;
|
sector_t first_sector, last_sector;
|
||||||
int raid_disks = conf->previous_raid_disks;
|
int raid_disks = conf->previous_raid_disks;
|
||||||
|
@ -4070,7 +4070,7 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr, int *sk
|
||||||
/* FIXME go_faster isn't used */
|
/* FIXME go_faster isn't used */
|
||||||
static inline sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipped, int go_faster)
|
static inline sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipped, int go_faster)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
struct stripe_head *sh;
|
struct stripe_head *sh;
|
||||||
sector_t max_sector = mddev->dev_sectors;
|
sector_t max_sector = mddev->dev_sectors;
|
||||||
sector_t sync_blocks;
|
sector_t sync_blocks;
|
||||||
|
@ -4155,7 +4155,7 @@ static inline sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int
|
||||||
return STRIPE_SECTORS;
|
return STRIPE_SECTORS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int retry_aligned_read(raid5_conf_t *conf, struct bio *raid_bio)
|
static int retry_aligned_read(struct r5conf *conf, struct bio *raid_bio)
|
||||||
{
|
{
|
||||||
/* We may not be able to submit a whole bio at once as there
|
/* We may not be able to submit a whole bio at once as there
|
||||||
* may not be enough stripe_heads available.
|
* may not be enough stripe_heads available.
|
||||||
|
@ -4230,7 +4230,7 @@ static int retry_aligned_read(raid5_conf_t *conf, struct bio *raid_bio)
|
||||||
static void raid5d(struct mddev *mddev)
|
static void raid5d(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
struct stripe_head *sh;
|
struct stripe_head *sh;
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
int handled;
|
int handled;
|
||||||
struct blk_plug plug;
|
struct blk_plug plug;
|
||||||
|
|
||||||
|
@ -4296,7 +4296,7 @@ static void raid5d(struct mddev *mddev)
|
||||||
static ssize_t
|
static ssize_t
|
||||||
raid5_show_stripe_cache_size(struct mddev *mddev, char *page)
|
raid5_show_stripe_cache_size(struct mddev *mddev, char *page)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
if (conf)
|
if (conf)
|
||||||
return sprintf(page, "%d\n", conf->max_nr_stripes);
|
return sprintf(page, "%d\n", conf->max_nr_stripes);
|
||||||
else
|
else
|
||||||
|
@ -4306,7 +4306,7 @@ raid5_show_stripe_cache_size(struct mddev *mddev, char *page)
|
||||||
int
|
int
|
||||||
raid5_set_cache_size(struct mddev *mddev, int size)
|
raid5_set_cache_size(struct mddev *mddev, int size)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (size <= 16 || size > 32768)
|
if (size <= 16 || size > 32768)
|
||||||
|
@ -4332,7 +4332,7 @@ EXPORT_SYMBOL(raid5_set_cache_size);
|
||||||
static ssize_t
|
static ssize_t
|
||||||
raid5_store_stripe_cache_size(struct mddev *mddev, const char *page, size_t len)
|
raid5_store_stripe_cache_size(struct mddev *mddev, const char *page, size_t len)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
unsigned long new;
|
unsigned long new;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
@ -4357,7 +4357,7 @@ raid5_stripecache_size = __ATTR(stripe_cache_size, S_IRUGO | S_IWUSR,
|
||||||
static ssize_t
|
static ssize_t
|
||||||
raid5_show_preread_threshold(struct mddev *mddev, char *page)
|
raid5_show_preread_threshold(struct mddev *mddev, char *page)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
if (conf)
|
if (conf)
|
||||||
return sprintf(page, "%d\n", conf->bypass_threshold);
|
return sprintf(page, "%d\n", conf->bypass_threshold);
|
||||||
else
|
else
|
||||||
|
@ -4367,7 +4367,7 @@ raid5_show_preread_threshold(struct mddev *mddev, char *page)
|
||||||
static ssize_t
|
static ssize_t
|
||||||
raid5_store_preread_threshold(struct mddev *mddev, const char *page, size_t len)
|
raid5_store_preread_threshold(struct mddev *mddev, const char *page, size_t len)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
unsigned long new;
|
unsigned long new;
|
||||||
if (len >= PAGE_SIZE)
|
if (len >= PAGE_SIZE)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -4391,7 +4391,7 @@ raid5_preread_bypass_threshold = __ATTR(preread_bypass_threshold,
|
||||||
static ssize_t
|
static ssize_t
|
||||||
stripe_cache_active_show(struct mddev *mddev, char *page)
|
stripe_cache_active_show(struct mddev *mddev, char *page)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
if (conf)
|
if (conf)
|
||||||
return sprintf(page, "%d\n", atomic_read(&conf->active_stripes));
|
return sprintf(page, "%d\n", atomic_read(&conf->active_stripes));
|
||||||
else
|
else
|
||||||
|
@ -4415,7 +4415,7 @@ static struct attribute_group raid5_attrs_group = {
|
||||||
static sector_t
|
static sector_t
|
||||||
raid5_size(struct mddev *mddev, sector_t sectors, int raid_disks)
|
raid5_size(struct mddev *mddev, sector_t sectors, int raid_disks)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
|
|
||||||
if (!sectors)
|
if (!sectors)
|
||||||
sectors = mddev->dev_sectors;
|
sectors = mddev->dev_sectors;
|
||||||
|
@ -4428,7 +4428,7 @@ raid5_size(struct mddev *mddev, sector_t sectors, int raid_disks)
|
||||||
return sectors * (raid_disks - conf->max_degraded);
|
return sectors * (raid_disks - conf->max_degraded);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void raid5_free_percpu(raid5_conf_t *conf)
|
static void raid5_free_percpu(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
struct raid5_percpu *percpu;
|
struct raid5_percpu *percpu;
|
||||||
unsigned long cpu;
|
unsigned long cpu;
|
||||||
|
@ -4450,7 +4450,7 @@ static void raid5_free_percpu(raid5_conf_t *conf)
|
||||||
free_percpu(conf->percpu);
|
free_percpu(conf->percpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void free_conf(raid5_conf_t *conf)
|
static void free_conf(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
shrink_stripes(conf);
|
shrink_stripes(conf);
|
||||||
raid5_free_percpu(conf);
|
raid5_free_percpu(conf);
|
||||||
|
@ -4463,7 +4463,7 @@ static void free_conf(raid5_conf_t *conf)
|
||||||
static int raid456_cpu_notify(struct notifier_block *nfb, unsigned long action,
|
static int raid456_cpu_notify(struct notifier_block *nfb, unsigned long action,
|
||||||
void *hcpu)
|
void *hcpu)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = container_of(nfb, raid5_conf_t, cpu_notify);
|
struct r5conf *conf = container_of(nfb, struct r5conf, cpu_notify);
|
||||||
long cpu = (long)hcpu;
|
long cpu = (long)hcpu;
|
||||||
struct raid5_percpu *percpu = per_cpu_ptr(conf->percpu, cpu);
|
struct raid5_percpu *percpu = per_cpu_ptr(conf->percpu, cpu);
|
||||||
|
|
||||||
|
@ -4498,7 +4498,7 @@ static int raid456_cpu_notify(struct notifier_block *nfb, unsigned long action,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int raid5_alloc_percpu(raid5_conf_t *conf)
|
static int raid5_alloc_percpu(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
unsigned long cpu;
|
unsigned long cpu;
|
||||||
struct page *spare_page;
|
struct page *spare_page;
|
||||||
|
@ -4540,9 +4540,9 @@ static int raid5_alloc_percpu(raid5_conf_t *conf)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static raid5_conf_t *setup_conf(struct mddev *mddev)
|
static struct r5conf *setup_conf(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf;
|
struct r5conf *conf;
|
||||||
int raid_disk, memory, max_disks;
|
int raid_disk, memory, max_disks;
|
||||||
struct md_rdev *rdev;
|
struct md_rdev *rdev;
|
||||||
struct disk_info *disk;
|
struct disk_info *disk;
|
||||||
|
@ -4576,7 +4576,7 @@ static raid5_conf_t *setup_conf(struct mddev *mddev)
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
conf = kzalloc(sizeof(raid5_conf_t), GFP_KERNEL);
|
conf = kzalloc(sizeof(struct r5conf), GFP_KERNEL);
|
||||||
if (conf == NULL)
|
if (conf == NULL)
|
||||||
goto abort;
|
goto abort;
|
||||||
spin_lock_init(&conf->device_lock);
|
spin_lock_init(&conf->device_lock);
|
||||||
|
@ -4707,7 +4707,7 @@ static int only_parity(int raid_disk, int algo, int raid_disks, int max_degraded
|
||||||
|
|
||||||
static int run(struct mddev *mddev)
|
static int run(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf;
|
struct r5conf *conf;
|
||||||
int working_disks = 0;
|
int working_disks = 0;
|
||||||
int dirty_parity_disks = 0;
|
int dirty_parity_disks = 0;
|
||||||
struct md_rdev *rdev;
|
struct md_rdev *rdev;
|
||||||
|
@ -4944,7 +4944,7 @@ abort:
|
||||||
|
|
||||||
static int stop(struct mddev *mddev)
|
static int stop(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
|
|
||||||
md_unregister_thread(&mddev->thread);
|
md_unregister_thread(&mddev->thread);
|
||||||
if (mddev->queue)
|
if (mddev->queue)
|
||||||
|
@ -4957,7 +4957,7 @@ static int stop(struct mddev *mddev)
|
||||||
|
|
||||||
static void status(struct seq_file *seq, struct mddev *mddev)
|
static void status(struct seq_file *seq, struct mddev *mddev)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
seq_printf(seq, " level %d, %dk chunk, algorithm %d", mddev->level,
|
seq_printf(seq, " level %d, %dk chunk, algorithm %d", mddev->level,
|
||||||
|
@ -4970,7 +4970,7 @@ static void status(struct seq_file *seq, struct mddev *mddev)
|
||||||
seq_printf (seq, "]");
|
seq_printf (seq, "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_raid5_conf (raid5_conf_t *conf)
|
static void print_raid5_conf (struct r5conf *conf)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct disk_info *tmp;
|
struct disk_info *tmp;
|
||||||
|
@ -4997,7 +4997,7 @@ static void print_raid5_conf (raid5_conf_t *conf)
|
||||||
static int raid5_spare_active(struct mddev *mddev)
|
static int raid5_spare_active(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
struct disk_info *tmp;
|
struct disk_info *tmp;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
@ -5021,7 +5021,7 @@ static int raid5_spare_active(struct mddev *mddev)
|
||||||
|
|
||||||
static int raid5_remove_disk(struct mddev *mddev, int number)
|
static int raid5_remove_disk(struct mddev *mddev, int number)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
struct md_rdev *rdev;
|
struct md_rdev *rdev;
|
||||||
struct disk_info *p = conf->disks + number;
|
struct disk_info *p = conf->disks + number;
|
||||||
|
@ -5064,7 +5064,7 @@ abort:
|
||||||
|
|
||||||
static int raid5_add_disk(struct mddev *mddev, struct md_rdev *rdev)
|
static int raid5_add_disk(struct mddev *mddev, struct md_rdev *rdev)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
int err = -EEXIST;
|
int err = -EEXIST;
|
||||||
int disk;
|
int disk;
|
||||||
struct disk_info *p;
|
struct disk_info *p;
|
||||||
|
@ -5142,7 +5142,7 @@ static int check_stripe_cache(struct mddev *mddev)
|
||||||
* If the chunk size is greater, user-space should request more
|
* If the chunk size is greater, user-space should request more
|
||||||
* stripe_heads first.
|
* stripe_heads first.
|
||||||
*/
|
*/
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
if (((mddev->chunk_sectors << 9) / STRIPE_SIZE) * 4
|
if (((mddev->chunk_sectors << 9) / STRIPE_SIZE) * 4
|
||||||
> conf->max_nr_stripes ||
|
> conf->max_nr_stripes ||
|
||||||
((mddev->new_chunk_sectors << 9) / STRIPE_SIZE) * 4
|
((mddev->new_chunk_sectors << 9) / STRIPE_SIZE) * 4
|
||||||
|
@ -5158,7 +5158,7 @@ static int check_stripe_cache(struct mddev *mddev)
|
||||||
|
|
||||||
static int check_reshape(struct mddev *mddev)
|
static int check_reshape(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
|
|
||||||
if (mddev->delta_disks == 0 &&
|
if (mddev->delta_disks == 0 &&
|
||||||
mddev->new_layout == mddev->layout &&
|
mddev->new_layout == mddev->layout &&
|
||||||
|
@ -5190,7 +5190,7 @@ static int check_reshape(struct mddev *mddev)
|
||||||
|
|
||||||
static int raid5_start_reshape(struct mddev *mddev)
|
static int raid5_start_reshape(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
struct md_rdev *rdev;
|
struct md_rdev *rdev;
|
||||||
int spares = 0;
|
int spares = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
@ -5305,7 +5305,7 @@ static int raid5_start_reshape(struct mddev *mddev)
|
||||||
/* This is called from the reshape thread and should make any
|
/* This is called from the reshape thread and should make any
|
||||||
* changes needed in 'conf'
|
* changes needed in 'conf'
|
||||||
*/
|
*/
|
||||||
static void end_reshape(raid5_conf_t *conf)
|
static void end_reshape(struct r5conf *conf)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) {
|
if (!test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) {
|
||||||
|
@ -5334,7 +5334,7 @@ static void end_reshape(raid5_conf_t *conf)
|
||||||
*/
|
*/
|
||||||
static void raid5_finish_reshape(struct mddev *mddev)
|
static void raid5_finish_reshape(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
|
|
||||||
if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) {
|
if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) {
|
||||||
|
|
||||||
|
@ -5369,7 +5369,7 @@ static void raid5_finish_reshape(struct mddev *mddev)
|
||||||
|
|
||||||
static void raid5_quiesce(struct mddev *mddev, int state)
|
static void raid5_quiesce(struct mddev *mddev, int state)
|
||||||
{
|
{
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
|
|
||||||
switch(state) {
|
switch(state) {
|
||||||
case 2: /* resume for a suspend */
|
case 2: /* resume for a suspend */
|
||||||
|
@ -5498,7 +5498,7 @@ static int raid5_check_reshape(struct mddev *mddev)
|
||||||
* For larger arrays we record the new value - after validation
|
* For larger arrays we record the new value - after validation
|
||||||
* to be used by a reshape pass.
|
* to be used by a reshape pass.
|
||||||
*/
|
*/
|
||||||
raid5_conf_t *conf = mddev->private;
|
struct r5conf *conf = mddev->private;
|
||||||
int new_chunk = mddev->new_chunk_sectors;
|
int new_chunk = mddev->new_chunk_sectors;
|
||||||
|
|
||||||
if (mddev->new_layout >= 0 && !algorithm_valid_raid5(mddev->new_layout))
|
if (mddev->new_layout >= 0 && !algorithm_valid_raid5(mddev->new_layout))
|
||||||
|
|
|
@ -197,7 +197,7 @@ enum reconstruct_states {
|
||||||
struct stripe_head {
|
struct stripe_head {
|
||||||
struct hlist_node hash;
|
struct hlist_node hash;
|
||||||
struct list_head lru; /* inactive_list or handle_list */
|
struct list_head lru; /* inactive_list or handle_list */
|
||||||
struct raid5_private_data *raid_conf;
|
struct r5conf *raid_conf;
|
||||||
short generation; /* increments with every
|
short generation; /* increments with every
|
||||||
* reshape */
|
* reshape */
|
||||||
sector_t sector; /* sector of this row */
|
sector_t sector; /* sector of this row */
|
||||||
|
@ -347,7 +347,7 @@ struct disk_info {
|
||||||
struct md_rdev *rdev;
|
struct md_rdev *rdev;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct raid5_private_data {
|
struct r5conf {
|
||||||
struct hlist_head *stripe_hashtbl;
|
struct hlist_head *stripe_hashtbl;
|
||||||
struct mddev *mddev;
|
struct mddev *mddev;
|
||||||
struct disk_info *spare;
|
struct disk_info *spare;
|
||||||
|
@ -439,8 +439,6 @@ struct raid5_private_data {
|
||||||
struct md_thread *thread;
|
struct md_thread *thread;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct raid5_private_data raid5_conf_t;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Our supported algorithms
|
* Our supported algorithms
|
||||||
*/
|
*/
|
||||||
|
@ -504,6 +502,6 @@ static inline int algorithm_is_DDF(int layout)
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int md_raid5_congested(struct mddev *mddev, int bits);
|
extern int md_raid5_congested(struct mddev *mddev, int bits);
|
||||||
extern void md_raid5_kick_device(raid5_conf_t *conf);
|
extern void md_raid5_kick_device(struct r5conf *conf);
|
||||||
extern int raid5_set_cache_size(struct mddev *mddev, int size);
|
extern int raid5_set_cache_size(struct mddev *mddev, int size);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue