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
nexedi
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