ore/exofs: Define new ore_verify_layout

All users of the ore will need to check if current code
supports the given layout. For example RAID5/6 is not
currently supported.

So move all the checks from exofs/super.c to a new
ore_verify_layout() to be used by ore users.

Note that any new layout should be passed through the
ore_verify_layout() because the ore engine will prepare
and verify some internal members of ore_layout, and
assumes it's called.

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
This commit is contained in:
Boaz Harrosh
2011-09-28 13:18:45 +03:00
parent 3bd9856857
commit 5a51c0c7e9
4 changed files with 80 additions and 53 deletions

View File

@ -42,6 +42,13 @@ struct ore_layout {
unsigned group_width;
u64 group_depth;
unsigned group_count;
/* Cached often needed calculations filled in by
* ore_verify_layout
*/
unsigned long max_io_length; /* Max length that should be passed to
* ore_get_rw_state
*/
};
struct ore_dev {
@ -138,6 +145,7 @@ static inline unsigned ore_io_state_size(unsigned numdevs)
}
/* ore.c */
int ore_verify_layout(unsigned total_comps, struct ore_layout *layout);
int ore_get_rw_state(struct ore_layout *layout, struct ore_components *comps,
bool is_reading, u64 offset, u64 length,
struct ore_io_state **ios);