Whamcloud - gitweb
LU-9489 lod: keep minimum LOVEA size
[fs/lustre-release.git] / lustre / lov / lov_internal.h
index b9743b6..6f74868 100644 (file)
@@ -80,6 +80,21 @@ struct lov_stripe_md {
        struct lov_stripe_md_entry *lsm_entries[];
 };
 
+static inline bool lsme_inited(const struct lov_stripe_md_entry *lsme)
+{
+       return lsme->lsme_flags & LCME_FL_INIT;
+}
+
+static inline bool lsm_entry_inited(const struct lov_stripe_md *lsm, int index)
+{
+       return lsme_inited(lsm->lsm_entries[index]);
+}
+
+static inline bool lsm_is_composite(__u32 magic)
+{
+       return !!(magic & LOV_MAGIC_COMP_V1);
+}
+
 static inline size_t lov_comp_md_size(const struct lov_stripe_md *lsm)
 {
        struct lov_stripe_md_entry *lsme;
@@ -94,8 +109,15 @@ static inline size_t lov_comp_md_size(const struct lov_stripe_md *lsm)
 
        size = sizeof(struct lov_comp_md_v1);
        for (entry = 0; entry < lsm->lsm_entry_count; entry++) {
+               u16 stripe_count;
+
                lsme = lsm->lsm_entries[entry];
 
+               if (lsme_inited(lsme))
+                       stripe_count = lsme->lsme_stripe_count;
+               else
+                       stripe_count = 0;
+
                size += sizeof(*lsme);
                size += lov_mds_md_size(lsme->lsme_stripe_count,
                                        lsme->lsme_magic);
@@ -338,20 +360,4 @@ static inline void lov_lsm2layout(struct lov_stripe_md *lsm,
                ol->ol_comp_id = 0;
        }
 }
-
-static inline bool lsme_inited(const struct lov_stripe_md_entry *lsme)
-{
-       return lsme->lsme_flags & LCME_FL_INIT;
-}
-
-static inline bool lsm_entry_inited(const struct lov_stripe_md *lsm, int index)
-{
-       return lsme_inited(lsm->lsm_entries[index]);
-}
-
-static inline bool lsm_is_composite(__u32 magic)
-{
-       return !!(magic & LOV_MAGIC_COMP_V1);
-}
-
 #endif