]> sourceware.org Git - lvm2.git/commitdiff
Add vg_mda_size and vg_mda_free functions.
authorDave Wysochanski <dwysocha@redhat.com>
Fri, 20 Aug 2010 12:43:49 +0000 (12:43 +0000)
committerDave Wysochanski <dwysocha@redhat.com>
Fri, 20 Aug 2010 12:43:49 +0000 (12:43 +0000)
Add supporting functions to get vg_mda_size and vg_mda_free fields.
Should be no functional change.

lib/metadata/metadata.c
lib/metadata/metadata.h
lib/report/report.c

index 92cca478b107004b4d7db44dafeddacbc8a912a4..2a3d03695a5c0b8192bed83395c6247fb98c08b4 100644 (file)
@@ -1217,6 +1217,48 @@ int vg_set_mda_copies(struct volume_group *vg, uint32_t mda_copies)
        return 1;
 }
 
+uint64_t find_min_mda_size(struct dm_list *mdas)
+{
+       uint64_t min_mda_size = UINT64_MAX, mda_size;
+       struct metadata_area *mda;
+
+       dm_list_iterate_items(mda, mdas) {
+               if (!mda->ops->mda_total_sectors)
+                       continue;
+               mda_size = mda->ops->mda_total_sectors(mda);
+               if (mda_size < min_mda_size)
+                       min_mda_size = mda_size;
+       }
+
+       if (min_mda_size == UINT64_MAX)
+               min_mda_size = UINT64_C(0);
+
+       return min_mda_size;
+}
+
+uint64_t vg_mda_size(const struct volume_group *vg)
+{
+       return find_min_mda_size(&vg->fid->metadata_areas_in_use);
+}
+
+uint64_t vg_mda_free(const struct volume_group *vg)
+{
+       uint64_t freespace = UINT64_MAX, mda_free;
+       struct metadata_area *mda;
+
+       dm_list_iterate_items(mda, &vg->fid->metadata_areas_in_use) {
+               if (!mda->ops->mda_free_sectors)
+                       continue;
+               mda_free = mda->ops->mda_free_sectors(mda);
+               if (mda_free < freespace)
+                       freespace = mda_free;
+       }
+
+       if (freespace == UINT64_MAX)
+               freespace = UINT64_C(0);
+       return freespace;
+}
+
 int vg_set_extent_size(struct volume_group *vg, uint32_t new_size)
 {
        uint32_t old_size = vg->extent_size;
index 25399c7d950be4f449aee040ac51a5ec8951e0eb..3d074dc5885a5e9d44b6a1a6fd0019c8be011745 100644 (file)
@@ -416,4 +416,8 @@ int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
 int vg_mark_partial_lvs(struct volume_group *vg);
 int is_mirror_image_removable(struct logical_volume *mimage_lv, void *baton);
 
+uint64_t find_min_mda_size(struct dm_list *mdas);
+uint64_t vg_mda_size(const struct volume_group *vg);
+uint64_t vg_mda_free(const struct volume_group *vg);
+
 #endif
index 718b28ecc3ca023d6542312435f9000939ace1e6..4f7cd0cc2bc70dbec85bfa08d3ba521176b032d1 100644 (file)
@@ -958,25 +958,6 @@ static int _pvmdafree_disp(struct dm_report *rh, struct dm_pool *mem,
        return _size64_disp(rh, mem, field, &freespace, private);
 }
 
-static uint64_t _find_min_mda_size(struct dm_list *mdas)
-{
-       uint64_t min_mda_size = UINT64_MAX, mda_size;
-       struct metadata_area *mda;
-
-       dm_list_iterate_items(mda, mdas) {
-               if (!mda->ops->mda_total_sectors)
-                       continue;
-               mda_size = mda->ops->mda_total_sectors(mda);
-               if (mda_size < min_mda_size)
-                       min_mda_size = mda_size;
-       }
-
-       if (min_mda_size == UINT64_MAX)
-               min_mda_size = UINT64_C(0);
-
-       return min_mda_size;
-}
-
 static int _pvmdasize_disp(struct dm_report *rh, struct dm_pool *mem,
                           struct dm_report_field *field,
                           const void *data, void *private)
@@ -987,7 +968,7 @@ static int _pvmdasize_disp(struct dm_report *rh, struct dm_pool *mem,
 
        /* PVs could have 2 mdas of different sizes (rounding effect) */
        if ((info = info_from_pvid(pvid, 0)))
-               min_mda_size = _find_min_mda_size(&info->mdas);
+               min_mda_size = find_min_mda_size(&info->mdas);
 
        return _size64_disp(rh, mem, field, &min_mda_size, private);
 }
@@ -999,7 +980,7 @@ static int _vgmdasize_disp(struct dm_report *rh, struct dm_pool *mem,
        const struct volume_group *vg = (const struct volume_group *) data;
        uint64_t min_mda_size;
 
-       min_mda_size = _find_min_mda_size(&vg->fid->metadata_areas_in_use);
+       min_mda_size = vg_mda_size(vg);
 
        return _size64_disp(rh, mem, field, &min_mda_size, private);
 }
@@ -1009,19 +990,9 @@ static int _vgmdafree_disp(struct dm_report *rh, struct dm_pool *mem,
                           const void *data, void *private)
 {
        const struct volume_group *vg = (const struct volume_group *) data;
-       uint64_t freespace = UINT64_MAX, mda_free;
-       struct metadata_area *mda;
-
-       dm_list_iterate_items(mda, &vg->fid->metadata_areas_in_use) {
-               if (!mda->ops->mda_free_sectors)
-                       continue;
-               mda_free = mda->ops->mda_free_sectors(mda);
-               if (mda_free < freespace)
-                       freespace = mda_free;
-       }
+       uint64_t freespace;
 
-       if (freespace == UINT64_MAX)
-               freespace = UINT64_C(0);
+       freespace = vg_mda_free(vg);
 
        return _size64_disp(rh, mem, field, &freespace, private);
 }
This page took 0.042988 seconds and 5 git commands to generate.