]> sourceware.org Git - lvm2.git/commitdiff
Move dev_open/dev_close outside vgname_from_mda().
authorDave Wysochanski <dwysocha@redhat.com>
Mon, 28 Jun 2010 20:30:46 +0000 (20:30 +0000)
committerDave Wysochanski <dwysocha@redhat.com>
Mon, 28 Jun 2010 20:30:46 +0000 (20:30 +0000)
Refactor vgname_from_mda() so caller must open/close the device.
Should be no functional change.

Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
lib/format_text/format-text.c
lib/format_text/text_label.c

index fdddae5a4f7b202473a13c75c6ea315187cf88d4..dc730fbe8478e18b402cc039d968ea1062a73746 100644 (file)
@@ -1099,9 +1099,6 @@ const char *vgname_from_mda(const struct format_type *fmt,
        if (mda_free_sectors)
                *mda_free_sectors = ((dev_area->size - MDA_HEADER_SIZE) / 2) >> SECTOR_SHIFT;
 
-       if (!dev_open(dev_area->dev))
-               return_NULL;
-
        if (!(mdah = _raw_read_mda_header(fmt, dev_area)))
                goto_out;
 
@@ -1179,9 +1176,6 @@ const char *vgname_from_mda(const struct format_type *fmt,
        }
 
       out:
-       if (!dev_close(dev_area->dev))
-               stack;
-
        return vgname;
 }
 
@@ -1202,20 +1196,20 @@ static int _scan_raw(const struct format_type *fmt)
 
        dm_list_iterate_items(rl, raw_list) {
                /* FIXME We're reading mdah twice here... */
+               if (!dev_open(rl->dev_area.dev)) {
+                       stack;
+                       continue;
+               }
+
                if ((vgname = vgname_from_mda(fmt, &rl->dev_area, &vgid, &vgstatus,
                                              NULL, NULL))) {
-                       if (!dev_open(rl->dev_area.dev)) {
-                               stack;
-                               continue;
-                       }
-
                        vg = _vg_read_raw_area(&fid, vgname, &rl->dev_area, 0);
                        if (vg)
                                lvmcache_update_vg(vg, 0);
 
-                       if (!dev_close(rl->dev_area.dev))
-                               stack;
                }
+               if (!dev_close(rl->dev_area.dev))
+                       stack;
        }
 
        return 1;
index 15758d6cd9d87c75941f1790ac70c65cdec70962..6f897e1d0164be272c5bd95c5f207bdeba0c7dae 100644 (file)
@@ -299,6 +299,10 @@ static int _text_read(struct labeller *l, struct device *dev, void *buf,
 
        dm_list_iterate_items(mda, &info->mdas) {
                mdac = (struct mda_context *) mda->metadata_locn;
+               if (!dev_open(mdac->area.dev)) {
+                       stack;
+                       continue;
+               }
                if ((vgname = vgname_from_mda(info->fmt, &mdac->area,
                                              &vgid, &vgstatus, &creation_host,
                                              &mdac->free_sectors)) &&
@@ -306,6 +310,8 @@ static int _text_read(struct labeller *l, struct device *dev, void *buf,
                                                   (char *) &vgid, vgstatus,
                                                   creation_host))
                        return_0;
+               if (!dev_close(mdac->area.dev))
+                       stack;
        }
 
        info->status &= ~CACHE_INVALID;
This page took 0.043679 seconds and 5 git commands to generate.