Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
d1688a6d
Commit
d1688a6d
authored
Oct 11, 2011
by
NeilBrown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
md/raid5: typedef removal: raid5_conf_t -> struct r5conf
Signed-off-by:
NeilBrown
<
neilb@suse.de
>
parent
e8096360
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
84 additions
and
86 deletions
+84
-86
drivers/md/dm-raid.c
drivers/md/dm-raid.c
+2
-2
drivers/md/raid5.c
drivers/md/raid5.c
+79
-79
drivers/md/raid5.h
drivers/md/raid5.h
+3
-5
No files found.
drivers/md/dm-raid.c
View file @
d1688a6d
...
...
@@ -1097,7 +1097,7 @@ static int raid_status(struct dm_target *ti, status_type_t type,
rs
->
md
.
bitmap_info
.
max_write_behind
);
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 */
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
;
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_opt
(
limits
,
chunk_size
*
(
conf
->
raid_disks
-
conf
->
max_degraded
));
...
...
drivers/md/raid5.c
View file @
d1688a6d
...
...
@@ -70,7 +70,7 @@
#define NR_HASH (PAGE_SIZE / sizeof(struct hlist_head))
#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
;
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
)
{
...
...
@@ -189,7 +189,7 @@ static int stripe_operations_active(struct stripe_head *sh)
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
))
{
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
)
{
raid5_conf_t
*
conf
=
sh
->
raid_conf
;
struct
r5conf
*
conf
=
sh
->
raid_conf
;
unsigned
long
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
);
}
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
);
...
...
@@ -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. */
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
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
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
);
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
;
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
);
}
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
)
{
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
* 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
i
;
...
...
@@ -424,7 +424,7 @@ static int has_failed(raid5_conf_t *conf)
}
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
)
{
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
)
{
raid5_conf_t
*
conf
=
sh
->
raid_conf
;
struct
r5conf
*
conf
=
sh
->
raid_conf
;
int
i
,
disks
=
sh
->
disks
;
might_sleep
();
...
...
@@ -643,7 +643,7 @@ static void ops_complete_biofill(void *stripe_head_ref)
{
struct
stripe_head
*
sh
=
stripe_head_ref
;
struct
bio
*
return_bi
=
NULL
;
raid5_conf_t
*
conf
=
sh
->
raid_conf
;
struct
r5conf
*
conf
=
sh
->
raid_conf
;
int
i
;
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
)
{
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
;
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
;
struct
dma_async_tx_descriptor
*
tx
=
NULL
;
raid5_conf_t
*
conf
=
sh
->
raid_conf
;
struct
r5conf
*
conf
=
sh
->
raid_conf
;
int
level
=
conf
->
level
;
struct
raid5_percpu
*
percpu
;
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
#endif
static
int
grow_one_stripe
(
raid5_conf_t
*
conf
)
static
int
grow_one_stripe
(
struct
r5conf
*
conf
)
{
struct
stripe_head
*
sh
;
sh
=
kmem_cache_zalloc
(
conf
->
slab_cache
,
GFP_KERNEL
);
...
...
@@ -1355,7 +1355,7 @@ static int grow_one_stripe(raid5_conf_t *conf)
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
;
int
devs
=
max
(
conf
->
raid_disks
,
conf
->
previous_raid_disks
);
...
...
@@ -1404,7 +1404,7 @@ static size_t scribble_len(int num)
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.
* 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
;
}
static
int
drop_one_stripe
(
raid5_conf_t
*
conf
)
static
int
drop_one_stripe
(
struct
r5conf
*
conf
)
{
struct
stripe_head
*
sh
;
...
...
@@ -1565,7 +1565,7 @@ static int drop_one_stripe(raid5_conf_t *conf)
return
1
;
}
static
void
shrink_stripes
(
raid5_conf_t
*
conf
)
static
void
shrink_stripes
(
struct
r5conf
*
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
)
{
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
uptodate
=
test_bit
(
BIO_UPTODATE
,
&
bi
->
bi_flags
);
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
)
{
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
uptodate
=
test_bit
(
BIO_UPTODATE
,
&
bi
->
bi_flags
);
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
)
{
char
b
[
BDEVNAME_SIZE
];
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
pr_debug
(
"raid456: error called
\n
"
);
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,
* 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
,
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
)
{
raid5_conf_t
*
conf
=
sh
->
raid_conf
;
struct
r5conf
*
conf
=
sh
->
raid_conf
;
int
raid_disks
=
sh
->
disks
;
int
data_disks
=
raid_disks
-
conf
->
max_degraded
;
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
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
;
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
)
{
struct
bio
**
bip
;
raid5_conf_t
*
conf
=
sh
->
raid_conf
;
struct
r5conf
*
conf
=
sh
->
raid_conf
;
int
firstwrite
=
0
;
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
;
}
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
)
{
int
sectors_per_chunk
=
...
...
@@ -2247,7 +2247,7 @@ static void stripe_set_idx(sector_t stripe, raid5_conf_t *conf, int previous,
}
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
bio
**
return_bi
)
{
...
...
@@ -2352,7 +2352,7 @@ handle_failed_stripe(raid5_conf_t *conf, struct stripe_head *sh,
}
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
)
{
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
* 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
)
{
int
i
;
...
...
@@ -2546,7 +2546,7 @@ static void handle_stripe_clean_event(raid5_conf_t *conf,
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_state
*
s
,
int
disks
)
...
...
@@ -2648,7 +2648,7 @@ static void handle_stripe_dirtying(raid5_conf_t *conf,
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
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
,
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
;
...
...
@@ -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
)
{
raid5_conf_t
*
conf
=
sh
->
raid_conf
;
struct
r5conf
*
conf
=
sh
->
raid_conf
;
int
disks
=
sh
->
disks
;
struct
r5dev
*
dev
;
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
)
{
struct
stripe_head_state
s
;
raid5_conf_t
*
conf
=
sh
->
raid_conf
;
struct
r5conf
*
conf
=
sh
->
raid_conf
;
int
i
;
int
prexor
;
int
disks
=
sh
->
disks
;
...
...
@@ -3373,7 +3373,7 @@ static void handle_stripe(struct stripe_head *sh)
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
)
{
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 */
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
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
/* No difference between reads and writes. Just check
* 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 )
* 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
;
...
...
@@ -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
;
...
...
@@ -3521,7 +3521,7 @@ static void raid5_align_endio(struct bio *bi, int error)
{
struct
bio
*
raid_bi
=
bi
->
bi_private
;
struct
mddev
*
mddev
;
raid5_conf_t
*
conf
;
struct
r5conf
*
conf
;
int
uptodate
=
test_bit
(
BIO_UPTODATE
,
&
bi
->
bi_flags
);
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
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
int
dd_idx
;
struct
bio
*
align_bi
;
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
* 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
;
...
...
@@ -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
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
int
dd_idx
;
sector_t
new_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
* into the destination stripe and release that stripe.
*/
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
struct
stripe_head
*
sh
;
sector_t
first_sector
,
last_sector
;
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 */
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
;
sector_t
max_sector
=
mddev
->
dev_sectors
;
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
;
}
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
* 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
)
{
struct
stripe_head
*
sh
;
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
int
handled
;
struct
blk_plug
plug
;
...
...
@@ -4296,7 +4296,7 @@ static void raid5d(struct mddev *mddev)
static
ssize_t
raid5_show_stripe_cache_size
(
struct
mddev
*
mddev
,
char
*
page
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
if
(
conf
)
return
sprintf
(
page
,
"%d
\n
"
,
conf
->
max_nr_stripes
);
else
...
...
@@ -4306,7 +4306,7 @@ raid5_show_stripe_cache_size(struct mddev *mddev, char *page)
int
raid5_set_cache_size
(
struct
mddev
*
mddev
,
int
size
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
int
err
;
if
(
size
<=
16
||
size
>
32768
)
...
...
@@ -4332,7 +4332,7 @@ EXPORT_SYMBOL(raid5_set_cache_size);
static
ssize_t
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
;
int
err
;
...
...
@@ -4357,7 +4357,7 @@ raid5_stripecache_size = __ATTR(stripe_cache_size, S_IRUGO | S_IWUSR,
static
ssize_t
raid5_show_preread_threshold
(
struct
mddev
*
mddev
,
char
*
page
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
if
(
conf
)
return
sprintf
(
page
,
"%d
\n
"
,
conf
->
bypass_threshold
);
else
...
...
@@ -4367,7 +4367,7 @@ raid5_show_preread_threshold(struct mddev *mddev, char *page)
static
ssize_t
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
;
if
(
len
>=
PAGE_SIZE
)
return
-
EINVAL
;
...
...
@@ -4391,7 +4391,7 @@ raid5_preread_bypass_threshold = __ATTR(preread_bypass_threshold,
static
ssize_t
stripe_cache_active_show
(
struct
mddev
*
mddev
,
char
*
page
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
if
(
conf
)
return
sprintf
(
page
,
"%d
\n
"
,
atomic_read
(
&
conf
->
active_stripes
));
else
...
...
@@ -4415,7 +4415,7 @@ static struct attribute_group raid5_attrs_group = {
static
sector_t
raid5_size
(
struct
mddev
*
mddev
,
sector_t
sectors
,
int
raid_disks
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
if
(
!
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
);
}
static
void
raid5_free_percpu
(
raid5_conf_t
*
conf
)
static
void
raid5_free_percpu
(
struct
r5conf
*
conf
)
{
struct
raid5_percpu
*
percpu
;
unsigned
long
cpu
;
...
...
@@ -4450,7 +4450,7 @@ static void raid5_free_percpu(raid5_conf_t *conf)
free_percpu
(
conf
->
percpu
);
}
static
void
free_conf
(
raid5_conf_t
*
conf
)
static
void
free_conf
(
struct
r5conf
*
conf
)
{
shrink_stripes
(
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
,
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
;
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
static
int
raid5_alloc_percpu
(
raid5_conf_t
*
conf
)
static
int
raid5_alloc_percpu
(
struct
r5conf
*
conf
)
{
unsigned
long
cpu
;
struct
page
*
spare_page
;
...
...
@@ -4540,9 +4540,9 @@ static int raid5_alloc_percpu(raid5_conf_t *conf)
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
;
struct
md_rdev
*
rdev
;
struct
disk_info
*
disk
;
...
...
@@ -4576,7 +4576,7 @@ static raid5_conf_t *setup_conf(struct mddev *mddev)
return
ERR_PTR
(
-
EINVAL
);
}
conf
=
kzalloc
(
sizeof
(
raid5_conf_t
),
GFP_KERNEL
);
conf
=
kzalloc
(
sizeof
(
struct
r5conf
),
GFP_KERNEL
);
if
(
conf
==
NULL
)
goto
abort
;
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
)
{
raid5_conf_t
*
conf
;
struct
r5conf
*
conf
;
int
working_disks
=
0
;
int
dirty_parity_disks
=
0
;
struct
md_rdev
*
rdev
;
...
...
@@ -4944,7 +4944,7 @@ static int run(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
);
if
(
mddev
->
queue
)
...
...
@@ -4957,7 +4957,7 @@ static int stop(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
;
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
,
"]"
);
}
static
void
print_raid5_conf
(
raid5_conf_t
*
conf
)
static
void
print_raid5_conf
(
struct
r5conf
*
conf
)
{
int
i
;
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
)
{
int
i
;
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
struct
disk_info
*
tmp
;
int
count
=
0
;
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
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
int
err
=
0
;
struct
md_rdev
*
rdev
;
struct
disk_info
*
p
=
conf
->
disks
+
number
;
...
...
@@ -5064,7 +5064,7 @@ static int raid5_remove_disk(struct mddev *mddev, int number)
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
disk
;
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
* stripe_heads first.
*/
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
if
(((
mddev
->
chunk_sectors
<<
9
)
/
STRIPE_SIZE
)
*
4
>
conf
->
max_nr_stripes
||
((
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
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
if
(
mddev
->
delta_disks
==
0
&&
mddev
->
new_layout
==
mddev
->
layout
&&
...
...
@@ -5190,7 +5190,7 @@ static int check_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
;
int
spares
=
0
;
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
* 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
))
{
...
...
@@ -5334,7 +5334,7 @@ static void end_reshape(raid5_conf_t *conf)
*/
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
))
{
...
...
@@ -5369,7 +5369,7 @@ static void raid5_finish_reshape(struct mddev *mddev)
static
void
raid5_quiesce
(
struct
mddev
*
mddev
,
int
state
)
{
raid5_conf_t
*
conf
=
mddev
->
private
;
struct
r5conf
*
conf
=
mddev
->
private
;
switch
(
state
)
{
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
* 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
;
if
(
mddev
->
new_layout
>=
0
&&
!
algorithm_valid_raid5
(
mddev
->
new_layout
))
...
...
drivers/md/raid5.h
View file @
d1688a6d
...
...
@@ -197,7 +197,7 @@ enum reconstruct_states {
struct
stripe_head
{
struct
hlist_node
hash
;
struct
list_head
lru
;
/* inactive_list or handle_list */
struct
r
aid5_private_data
*
raid_conf
;
struct
r
5conf
*
raid_conf
;
short
generation
;
/* increments with every
* reshape */
sector_t
sector
;
/* sector of this row */
...
...
@@ -347,7 +347,7 @@ struct disk_info {
struct
md_rdev
*
rdev
;
};
struct
r
aid5_private_data
{
struct
r
5conf
{
struct
hlist_head
*
stripe_hashtbl
;
struct
mddev
*
mddev
;
struct
disk_info
*
spare
;
...
...
@@ -439,8 +439,6 @@ struct raid5_private_data {
struct
md_thread
*
thread
;
};
typedef
struct
raid5_private_data
raid5_conf_t
;
/*
* 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
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
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment