]> sourceware.org Git - lvm2.git/commitdiff
Generalise polldaemon code by changing mirror-specific variable names.
authorAlasdair Kergon <agk@redhat.com>
Tue, 29 Sep 2009 19:35:26 +0000 (19:35 +0000)
committerAlasdair Kergon <agk@redhat.com>
Tue, 29 Sep 2009 19:35:26 +0000 (19:35 +0000)
WHATS_NEW
tools/polldaemon.c
tools/polldaemon.h

index 519abfe2d02eda20e452f5a57af369819486e78a..10c899b05a3d9bbc669045339f3ba2e0b3acf735 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.54 -
 =====================================
+  Generalise polldaemon code by changing mirror-specific variable names.
   Don't attempt to deactivate an LV if any of its snapshots are in use.
   Return fail if lv_deactivate fails to remove device from kernel.
   Provide alternative implementation of obsolete siginterrupt().
index 6b7cd5bd0a575bcd279c3ee4bc9c8bbb5bed6a49..d0c39d1f191b768790f7c383439fd8d5516080d1 100644 (file)
@@ -63,11 +63,11 @@ static int _become_daemon(struct cmd_context *cmd)
        return 1;
 }
 
-static int _check_mirror_status(struct cmd_context *cmd,
-                               struct volume_group *vg,
-                               struct logical_volume *lv_mirr,
-                               const char *name, struct daemon_parms *parms,
-                               int *finished)
+static int _check_lv_status(struct cmd_context *cmd,
+                           struct volume_group *vg,
+                           struct logical_volume *lv,
+                           const char *name, struct daemon_parms *parms,
+                           int *finished)
 {
        struct dm_list *lvs_changed;
        float segment_percent = 0.0, overall_percent = 0.0;
@@ -77,22 +77,22 @@ static int _check_mirror_status(struct cmd_context *cmd,
        *finished = 1;
 
        if (parms->aborting) {
-               if (!(lvs_changed = lvs_using_lv(cmd, vg, lv_mirr))) {
+               if (!(lvs_changed = lvs_using_lv(cmd, vg, lv))) {
                        log_error("Failed to generate list of copied LVs: "
                                  "can't abort.");
                        return 0;
                }
-               parms->poll_fns->finish_copy(cmd, vg, lv_mirr, lvs_changed);
+               parms->poll_fns->finish_copy(cmd, vg, lv, lvs_changed);
                return 0;
        }
 
-       if (!lv_mirror_percent(cmd, lv_mirr, !parms->interval, &segment_percent,
+       if (!lv_mirror_percent(cmd, lv, !parms->interval, &segment_percent,
                               &event_nr)) {
                log_error("ABORTING: Mirror percentage check failed.");
                return 0;
        }
 
-       overall_percent = copy_percent(lv_mirr);
+       overall_percent = copy_percent(lv);
        if (parms->progress_display)
                log_print("%s: %s: %.1f%%", name, parms->progress_title,
                          overall_percent);
@@ -106,22 +106,20 @@ static int _check_mirror_status(struct cmd_context *cmd,
                return 1;
        }
 
-       if (!(lvs_changed = lvs_using_lv(cmd, vg, lv_mirr))) {
+       if (!(lvs_changed = lvs_using_lv(cmd, vg, lv))) {
                log_error("ABORTING: Failed to generate list of copied LVs");
                return 0;
        }
 
        /* Finished? Or progress to next segment? */
        if (overall_percent >= 100.0) {
-               if (!parms->poll_fns->finish_copy(cmd, vg, lv_mirr,
-                                                 lvs_changed))
+               if (!parms->poll_fns->finish_copy(cmd, vg, lv, lvs_changed))
                        return 0;
        } else {
-               if (!parms->poll_fns->update_metadata(cmd, vg, lv_mirr,
-                                                     lvs_changed, 0)) {
+               if (!parms->poll_fns->update_metadata(cmd, vg, lv, lvs_changed,
+                                                     0)) {
                        log_error("ABORTING: Segment progression failed.");
-                       parms->poll_fns->finish_copy(cmd, vg, lv_mirr,
-                                                    lvs_changed);
+                       parms->poll_fns->finish_copy(cmd, vg, lv, lvs_changed);
                        return 0;
                }
                *finished = 0;  /* Another segment */
@@ -130,14 +128,14 @@ static int _check_mirror_status(struct cmd_context *cmd,
        return 1;
 }
 
-static int _wait_for_single_mirror(struct cmd_context *cmd, const char *name, const char *uuid,
+static int _wait_for_single_lv(struct cmd_context *cmd, const char *name, const char *uuid,
                                   struct daemon_parms *parms)
 {
        struct volume_group *vg;
-       struct logical_volume *lv_mirr;
+       struct logical_volume *lv;
        int finished = 0;
 
-       /* Poll for mirror completion */
+       /* Poll for completion */
        while (!finished) {
                /* FIXME Also needed in vg/lvchange -ay? */
                /* FIXME Use alarm for regular intervals instead */
@@ -156,16 +154,15 @@ static int _wait_for_single_mirror(struct cmd_context *cmd, const char *name, co
                        return 0;
                }
 
-               if (!(lv_mirr = parms->poll_fns->get_copy_lv(cmd, vg, name, uuid,
-                                                            parms->lv_type))) {
+               if (!(lv = parms->poll_fns->get_copy_lv(cmd, vg, name, uuid,
+                                                       parms->lv_type))) {
                        log_error("ABORTING: Can't find mirror LV in %s for %s",
                                  vg->name, name);
                        unlock_and_release_vg(cmd, vg, vg->name);
                        return 0;
                }
 
-               if (!_check_mirror_status(cmd, vg, lv_mirr, name, parms,
-                                         &finished)) {
+               if (!_check_lv_status(cmd, vg, lv, name, parms, &finished)) {
                        unlock_and_release_vg(cmd, vg, vg->name);
                        return 0;
                }
@@ -181,20 +178,20 @@ static int _poll_vg(struct cmd_context *cmd, const char *vgname,
 {
        struct daemon_parms *parms = (struct daemon_parms *) handle;
        struct lv_list *lvl;
-       struct logical_volume *lv_mirr;
+       struct logical_volume *lv;
        const char *name;
        int finished;
 
        dm_list_iterate_items(lvl, &vg->lvs) {
-               lv_mirr = lvl->lv;
-               if (!(lv_mirr->status & parms->lv_type))
+               lv = lvl->lv;
+               if (!(lv->status & parms->lv_type))
                        continue;
-               if (!(name = parms->poll_fns->get_copy_name_from_lv(lv_mirr)))
+               if (!(name = parms->poll_fns->get_copy_name_from_lv(lv)))
                        continue;
                /* FIXME Need to do the activation from _set_up_pvmove here
                 *       if it's not running and we're not aborting */
-               if (_check_mirror_status(cmd, vg, lv_mirr, name,
-                                        parms, &finished) && !finished)
+               if (_check_lv_status(cmd, vg, lv, name, parms, &finished) &&
+                   !finished)
                        parms->outstanding_count++;
        }
 
@@ -249,8 +246,11 @@ int poll_daemon(struct cmd_context *cmd, const char *name, const char *uuid,
                /*       fork one daemon per copy? */
        }
 
+       /*
+        * Process one specific task or all incomplete tasks?
+        */
        if (name) {
-               if (!_wait_for_single_mirror(cmd, name, uuid, &parms)) {
+               if (!_wait_for_single_lv(cmd, name, uuid, &parms)) {
                        stack;
                        return ECMD_FAILED;
                }
index ba23b182c58370f2de1322d563f2511864791ee2..1b7e18611f70deb293be8e0d94bfce06ee6cc9e2 100644 (file)
@@ -19,7 +19,7 @@
 #include "metadata-exported.h"
 
 struct poll_functions {
-       const char *(*get_copy_name_from_lv) (struct logical_volume *lv_mirr);
+       const char *(*get_copy_name_from_lv) (struct logical_volume *lv);
        struct volume_group *(*get_copy_vg) (struct cmd_context *cmd,
                                             const char *name,
                                             const char *uuid);
@@ -30,11 +30,11 @@ struct poll_functions {
                                               uint32_t lv_type);
        int (*update_metadata) (struct cmd_context *cmd,
                                struct volume_group *vg,
-                               struct logical_volume *lv_mirr,
+                               struct logical_volume *lv,
                                struct dm_list *lvs_changed, unsigned flags);
        int (*finish_copy) (struct cmd_context *cmd,
                            struct volume_group *vg,
-                           struct logical_volume *lv_mirr,
+                           struct logical_volume *lv,
                            struct dm_list *lvs_changed);
 };
 
This page took 0.053332 seconds and 5 git commands to generate.