Whamcloud - gitweb
LU-13799 lov: Cache stripe offset calculation
[fs/lustre-release.git] / lustre / lov / lov_cl_internal.h
index 284b4a4..9563315 100644 (file)
@@ -225,6 +225,7 @@ struct lov_layout_dom {
 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;
@@ -236,11 +237,11 @@ struct lov_layout_entry {
 
 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 */
@@ -449,8 +450,6 @@ struct lov_lock {
 
 struct lov_page {
        struct cl_page_slice    lps_cl;
-       /* the layout gen when this page was created */
-       __u32                   lps_layout_gen;
 };
 
 /*
@@ -520,6 +519,7 @@ struct lov_io_sub {
 /**
  * IO state private for LOV.
  */
+#define LIS_CACHE_ENTRY_NONE   -ENOENT
 struct lov_io {
         /** super-class */
         struct cl_io_slice lis_cl;
@@ -585,7 +585,12 @@ struct lov_io {
         * 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 {