struct lov_layout_entry {
__u32 lle_type;
unsigned int lle_valid:1;
+ unsigned int lle_preference;
struct lu_extent *lle_extent;
struct lov_stripe_md_entry *lle_lsme;
struct lov_comp_layout_entry_ops *lle_comp_ops;
struct lov_mirror_entry {
unsigned short lre_mirror_id;
- unsigned short lre_preferred:1,
- lre_stale:1, /* set if any components is stale */
+ unsigned short lre_stale:1, /* set if any components is stale */
lre_valid:1, /* set if at least one of components
* in this mirror is valid */
lre_foreign:1; /* set if it is a foreign component */
+ int lre_preference; /* overall preference of this mirror */
unsigned short lre_start; /* index to lo_entries, start index of
* this mirror */
struct lov_page {
struct cl_page_slice lps_cl;
- /* the layout gen when this page was created */
- __u32 lps_layout_gen;
};
/*
/**
* IO state private for LOV.
*/
+#define LIS_CACHE_ENTRY_NONE -ENOENT
struct lov_io {
/** super-class */
struct cl_io_slice lis_cl;
* All sub-io's created in this lov_io.
*/
struct list_head lis_subios;
-
+ /* Cached results from stripe & offset calculations for page init */
+ int lis_cached_entry;
+ int lis_cached_stripe;
+ loff_t lis_cached_off;
+ loff_t lis_cached_suboff;
+ struct lov_io_sub *lis_cached_sub;
};
struct lov_session {