]> sourceware.org Git - lvm2.git/commitdiff
archiving: take archive automatically
authorZdenek Kabelac <zkabelac@redhat.com>
Tue, 8 Jun 2021 17:02:07 +0000 (19:02 +0200)
committerZdenek Kabelac <zkabelac@redhat.com>
Wed, 9 Jun 2021 12:56:13 +0000 (14:56 +0200)
Instead of calling explicit archive with command processing logic,
move this step towards 1st. vg_write() call, which will automatically
store archive of committed metadata.

This slightly changes some error path where the error in archiving
was detected earlier in the command, while now some on going command
'actions' might have been, but will be simply scratched in case
of error (since even new metadata would not have been even written).

So general effect should be only some command message ordering.

15 files changed:
lib/metadata/lv_manip.c
lib/metadata/metadata.c
lib/metadata/pv_manip.c
lib/metadata/vg.c
tools/lvconvert.c
tools/pvchange.c
tools/pvmove.c
tools/vgchange.c
tools/vgcreate.c
tools/vgexport.c
tools/vgextend.c
tools/vgimport.c
tools/vgimportclone.c
tools/vgreduce.c
tools/vgrename.c

index 37dd3611dde740a1fc3795834ee8c47ed7f6de16..899297f2849865819a5db9d8be732f6d07c7dd66 100644 (file)
@@ -4834,9 +4834,6 @@ int lv_rename_update(struct cmd_context *cmd, struct logical_volume *lv,
                }
        }
 
-       if (update_mda && !archive(vg))
-               return_0;
-
        if (old_lv_is_historical) {
                /*
                 * Historical LVs have neither sub LVs nor any
@@ -6146,9 +6143,6 @@ int lv_resize(struct logical_volume *lv,
        if (!lockd_lv_resize(cmd, lock_lv, "ex", 0, lp))
                return_0;
 
-       if (!archive(vg))
-               return_0;
-
        /* Remove any striped raid reshape space for LV resizing */
        if (aux_lv && first_seg(aux_lv)->reshape_len)
                if (!lv_raid_free_reshape_space(aux_lv))
@@ -6719,9 +6713,6 @@ int lv_remove_single(struct cmd_context *cmd, struct logical_volume *lv,
                        return 0;
                }
 
-               if (!archive(vg))
-                       return_0;
-
                if (!lv_detach_writecache_cachevol(lv, 1)) {
                        log_error("Failed to detach writecache from %s", display_lvname(lv));
                        return 0;
@@ -6742,9 +6733,6 @@ int lv_remove_single(struct cmd_context *cmd, struct logical_volume *lv,
                /* FIXME Review and fix the snapshot error paths! */
                return_0;
 
-       if (!archive(vg))
-               return_0;
-
        /* Special case removing a striped raid LV with allocated reshape space */
        if (seg && seg->reshape_len) {
                if (!(seg->segtype = get_segtype_from_string(cmd, SEG_TYPE_NAME_STRIPED)))
@@ -8458,9 +8446,6 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
                return NULL;
        }
 
-       if (!archive(vg))
-               return_NULL;
-
        if (pool_lv && segtype_is_thin_volume(create_segtype)) {
                /* Ensure all stacked messages are submitted */
                if ((pool_is_active(pool_lv) || is_change_activating(lp->activate)) &&
index 0b284435b41b71ee9fa8d94402a51647334f7934..6852d2a2a7fe76ce5684cee903d5b762de828dcd 100644 (file)
@@ -614,9 +614,6 @@ int vg_remove_check(struct volume_group *vg)
                return 0;
        }
 
-       if (!archive(vg))
-               return 0;
-
        return 1;
 }
 
@@ -2978,6 +2975,9 @@ int vg_write(struct volume_group *vg)
        if (vg->cmd->wipe_outdated_pvs)
                _wipe_outdated_pvs(vg->cmd, vg);
 
+       if (!vg_is_archived(vg) && vg->vg_committed && !archive(vg->vg_committed))
+               return_0;
+
        if (critical_section())
                log_error(INTERNAL_ERROR
                          "Writing metadata in critical section.");
index 5fd80a2ceca36e0a14b306b4eac442f4f3d15aa1..fd97bbbc24623f89bd089475a5d3847015a04bc1 100644 (file)
@@ -623,9 +623,6 @@ int pv_resize_single(struct cmd_context *cmd,
        const char *vg_name = pv->vg_name;
        int vg_needs_pv_write = 0;
 
-       if (!archive(vg))
-               goto out;
-
        if (!(pv->fmt->features & FMT_RESIZE_PV)) {
                log_error("Physical volume %s format does not support resizing.",
                          pv_name);
index 3f9ec8d350fbea0bd41b4c83700495444fff3dc8..428e5dca79c667737b795a61f93fce7d78cd0e41 100644 (file)
@@ -694,9 +694,6 @@ int vgreduce_single(struct cmd_context *cmd, struct volume_group *vg,
 
        pvl = find_pv_in_vg(vg, name);
 
-       if (!archive(vg))
-               goto_bad;
-
        log_verbose("Removing \"%s\" from volume group \"%s\"", name, vg->name);
 
        if (pvl)
index 71f7a7627fa1c850c5e6649bf4fb046380af3f5b..c40031fe47a83002a5234afc98417c17d39396b6 100644 (file)
@@ -1861,9 +1861,6 @@ static int _lvconvert_splitsnapshot(struct cmd_context *cmd, struct logical_volu
                }
        }
 
-       if (!archive(vg))
-               return_0;
-
        log_verbose("Splitting snapshot %s from its origin.", display_lvname(cow));
 
        if (!vg_remove_snapshot(cow))
@@ -2796,9 +2793,6 @@ static int _lvconvert_to_thin_with_external(struct cmd_context *cmd,
        if (!(lvc.segtype = get_segtype_from_string(cmd, SEG_TYPE_NAME_THIN)))
                return_0;
 
-       if (!archive(vg))
-               return_0;
-
        /*
         * New thin LV needs to be created (all messages sent to pool) In this
         * case thin volume is created READ-ONLY and also warn about not
@@ -2979,9 +2973,6 @@ static int _lvconvert_swap_pool_metadata(struct cmd_context *cmd,
                return 0;
        }
 
-       if (!archive(vg))
-               return_0;
-
        /* Swap names between old and new metadata LV */
 
        if (!detach_pool_metadata_lv(seg, &prev_metadata_lv))
@@ -3286,9 +3277,6 @@ static int _lvconvert_to_pool(struct cmd_context *cmd,
                meta_readahead = arg_uint_value(cmd, readahead_ARG, cmd->default_settings.read_ahead);
                meta_alloc = (alloc_policy_t) arg_uint_value(cmd, alloc_ARG, ALLOC_INHERIT);
 
-               if (!archive(vg))
-                       goto_bad;
-
                if (!(metadata_lv = alloc_pool_metadata(lv,
                                                        meta_name,
                                                        meta_readahead,
@@ -3305,9 +3293,6 @@ static int _lvconvert_to_pool(struct cmd_context *cmd,
                        goto bad;
                }
 
-               if (!archive(vg))
-                       goto_bad;
-
                if (zero_metadata) {
                        metadata_lv->status |= LV_ACTIVATION_SKIP;
                        if (!activate_lv(cmd, metadata_lv)) {
@@ -3556,9 +3541,6 @@ static int _cache_vol_attach(struct cmd_context *cmd,
        if (!get_cache_params(cmd, &chunk_size, &cache_metadata_format, &cache_mode, &policy_name, &policy_settings))
                goto_out;
 
-       if (!archive(vg))
-               goto_out;
-
        /*
         * lv/cache_lv keeps the same lockd lock it had before, the lock for
         * lv_fast is kept but is not used while it's attached, and
@@ -5525,9 +5507,6 @@ static int _lvconvert_to_vdopool_single(struct cmd_context *cmd,
                }
        }
 
-       if (!archive(vg))
-               goto_out;
-
        if (!convert_vdo_pool_lv(lv, &vdo_params, &lvc.virtual_extents, zero_vdopool))
                goto_out;
 
@@ -6198,9 +6177,6 @@ int lvconvert_writecache_attach_single(struct cmd_context *cmd,
        if (fast_name && !lockd_lv(cmd, lv_fast, "ex", 0))
                goto_bad;
 
-       if (!archive(vg))
-               goto_bad;
-
        /*
         * lv keeps the same lockd lock it had before, the lock for
         * lv_fast is kept but is not used while it's attached, and
@@ -6339,9 +6315,6 @@ static int _lvconvert_integrity_remove(struct cmd_context *cmd, struct logical_v
        if (!lockd_lv(cmd, lv, "ex", 0))
                return_0;
 
-       if (!archive(vg))
-               return_0;
-
        if (lv_is_raid(lv))
                ret = lv_remove_integrity_from_raid(lv);
        if (!ret)
@@ -6371,9 +6344,6 @@ static int _lvconvert_integrity_add(struct cmd_context *cmd, struct logical_volu
        } else
                use_pvh = &vg->pvs;
 
-       if (!archive(vg))
-               return_0;
-
        if (lv_is_partial(lv)) {
                log_error("Cannot add integrity while LV is missing PVs.");
                return 0;
index 04cbb428dde14de3703ba663e71e4aeef124c953..8b4a0643d3cdd5447202f70c52103e98dab5caa2 100644 (file)
@@ -65,8 +65,6 @@ static int _pvchange_single(struct cmd_context *cmd, struct volume_group *vg,
                                  "logical volumes", pv_name);
                        goto bad;
                }
-               if (!archive(vg))
-                       goto_bad;
        } else {
                if (tagargs) {
                        log_error("Can't change tag on Physical Volume %s not "
index bb372f7dcaeb6741d708e362c4bd09931fb75a1d..ed92f3ce4a6d6556208bea17f82af6860fcc02e9 100644 (file)
@@ -709,9 +709,6 @@ static int _pvmove_setup_single(struct cmd_context *cmd,
                                                             vg, pv, pp->alloc)))
                        goto_out;
 
-               if (!archive(vg))
-                       goto_out;
-
                if (!(lv_mirr = _set_up_pvmove_lv(cmd, vg, source_pvl, lv_name,
                                                  allocatable_pvs, pp->alloc,
                                                  &lvs_changed, &exclusive)))
index 032f3efcfd04c36fdb2d8ed1df783afc18f4131a..625b68d46b569818acdcce014e4ea7bdfd22000a 100644 (file)
@@ -675,8 +675,6 @@ static int _vgchange_single(struct cmd_context *cmd, const char *vg_name,
 
        for (i = 0; i < DM_ARRAY_SIZE(_vgchange_args); ++i) {
                if (arg_is_set(cmd, _vgchange_args[i].arg)) {
-                       if (!archive(vg))
-                               return_ECMD_FAILED;
                        if (!_vgchange_args[i].fn(cmd, vg))
                                return_ECMD_FAILED;
                }
@@ -1002,9 +1000,6 @@ static int _vgchange_locktype_single(struct cmd_context *cmd, const char *vg_nam
                                     struct volume_group *vg,
                                     struct processing_handle *handle)
 {
-       if (!archive(vg))
-               return_ECMD_FAILED;
-
        if (!_vgchange_locktype(cmd, vg))
                return_ECMD_FAILED;
 
@@ -1201,9 +1196,6 @@ static int _vgchange_systemid_single(struct cmd_context *cmd, const char *vg_nam
                                     struct volume_group *vg,
                                     struct processing_handle *handle)
 {
-       if (!archive(vg))
-               return_ECMD_FAILED;
-
        if (!_vgchange_system_id(cmd, vg))
                return_ECMD_FAILED;
 
index f9c40e86d6463637d4a4661e372c3533b4f63e04..d6d6bb61ddc3dd04eff573024d5a0b1cd6b439f0 100644 (file)
@@ -148,9 +148,6 @@ int vgcreate(struct cmd_context *cmd, int argc, char **argv)
                }
        }
 
-       if (!archive(vg))
-               goto_bad;
-
        /* Store VG on disk(s) */
        if (!vg_write(vg) || !vg_commit(vg))
                goto_bad;
index 86dad3abb43253609d9b87129c538eaf28d20ff7..15cc3dd75d561503e987b5361a85bbd6b00dfdf1 100644 (file)
@@ -45,10 +45,6 @@ static int vgexport_single(struct cmd_context *cmd __attribute__((unused)),
                }
        }
 
-
-       if (!archive(vg))
-               goto_bad;
-
        vg->status |= EXPORTED_VG;
        vg->system_id = NULL;
 
index 04d37f886d4d512991a36a06dfd90d2b42c4621b..b0f49569f492a4ea875f968911f00b9c5e2546aa 100644 (file)
@@ -60,9 +60,6 @@ static int _vgextend_restoremissing(struct cmd_context *cmd __attribute__((unuse
        int fixed = 0;
        unsigned i;
 
-       if (!archive(vg))
-               return_0;
-
        for (i = 0; i < pp->pv_count; i++)
                if (_restore_pv(vg, pp->pv_names[i]))
                        fixed++;
@@ -99,9 +96,6 @@ static int _vgextend_single(struct cmd_context *cmd, const char *vg_name,
                return ECMD_FAILED;
        }
 
-       if (!archive(vg))
-               return_ECMD_FAILED;
-
        if (!vg_extend_each_pv(vg, pp))
                goto_out;
 
index 0d8b0f2157047f4a09cc99f0592c8a1cbb5803ee..4b25b468f017191d583692786f37f7fce94ce283 100644 (file)
@@ -33,9 +33,6 @@ static int _vgimport_single(struct cmd_context *cmd,
                goto bad;
        }
 
-       if (!archive(vg))
-               goto_bad;
-
        vg->status &= ~EXPORTED_VG;
 
        if (!vg_is_shared(vg))
index 1e6bb2d69d83f7c8f2ed5bbd857e14ae684e62e0..a4778277108e6aa3149ef64c17aa9e86a1bd0c50 100644 (file)
@@ -110,9 +110,6 @@ static int _update_vg(struct cmd_context *cmd, struct volume_group *vg,
         * Write changes.
         */
 
-       if (!archive(vg))
-               goto_bad;
-
        if (vp->import_vg)
                vg->status &= ~EXPORTED_VG;
 
index 4a4202e8683fc183042824e18c71ce7bf31d3518..c759c664301cc8349566c109d867917ba29841ad 100644 (file)
@@ -157,9 +157,6 @@ static int _vgreduce_repair_single(struct cmd_context *cmd, const char *vg_name,
                return ECMD_PROCESSED;
        }
 
-       if (!archive(vg))
-               return_ECMD_FAILED;
-
        if (vp->force) {
                if (!_make_vg_consistent(cmd, vg))
                        return_ECMD_FAILED;
index f442f731fd4a96d3bbe87ee29f153ed5307d01b5..71b4e16774afde7f8697128d363c210ed72261d9 100644 (file)
@@ -103,9 +103,6 @@ static int _vgrename_single(struct cmd_context *cmd, const char *vg_name,
 
        dev_dir = cmd->dev_dir;
 
-       if (!archive(vg))
-               goto error;
-
        if (!lockd_rename_vg_before(cmd, vg)) {
                stack;
                goto error;
This page took 0.063754 seconds and 5 git commands to generate.