1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

lvconvert waits for initial completion by default

This commit is contained in:
Alasdair Kergon 2008-01-14 21:11:47 +00:00
parent b8daca8570
commit 272465eab4
2 changed files with 13 additions and 6 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.30 -
===================================
lvconvert waits for completion of initial sync by default.
Refactor vgcreate for parameter validation and add tests.
Add new convert_lv field to lvs output.
Print warning when lvm tools are running as non-root.

View File

@ -24,7 +24,8 @@ struct lvconvert_params {
const char *lv_name;
const char *lv_name_full;
const char *vg_name;
int wait_daemon;
int wait_completion;
int need_polling;
uint32_t chunk_size;
uint32_t region_size;
@ -116,6 +117,9 @@ static int _read_params(struct lvconvert_params *lp, struct cmd_context *cmd,
return 0;
}
if (!arg_count(cmd, background_ARG))
lp->wait_completion = 1;
if (arg_count(cmd, snapshot_ARG))
lp->snapshot = 1;
@ -374,7 +378,7 @@ static int lvconvert_mirrors(struct cmd_context * cmd, struct logical_volume * l
/* If called with no argument, try collapsing the resync layers */
if (!arg_count(cmd, mirrors_ARG) && !arg_count(cmd, mirrorlog_ARG) &&
!arg_count(cmd, corelog_ARG)) {
lp->wait_daemon = 1;
lp->need_polling = 1;
return 1;
}
@ -476,6 +480,8 @@ static int lvconvert_mirrors(struct cmd_context * cmd, struct logical_volume * l
corelog ? 0U : 1U, lp->pvh, lp->alloc,
MIRROR_BY_LV))
return_0;
if (lp->wait_completion)
lp->need_polling = 1;
goto commit_changes;
}
@ -549,7 +555,7 @@ static int lvconvert_mirrors(struct cmd_context * cmd, struct logical_volume * l
MIRROR_BY_LV))
return_0;
lv->status |= CONVERTING;
lp->wait_daemon = 1;
lp->need_polling = 1;
} else {
/* Reduce number of mirrors */
if (!lv_remove_mirrors(cmd, lv, existing_mirrors - lp->mirrors,
@ -584,7 +590,7 @@ commit_changes:
return 0;
}
if (!lp->wait_daemon)
if (!lp->need_polling)
log_print("Logical volume %s converted.", lv->name);
return 1;
@ -740,13 +746,13 @@ int lvconvert(struct cmd_context * cmd, int argc, char **argv)
error:
unlock_vg(cmd, lp.vg_name);
if (ret == ECMD_PROCESSED && lp.wait_daemon) {
if (ret == ECMD_PROCESSED && lp.need_polling) {
if (!lv_info(cmd, lvl->lv, &info, 1, 0) || !info.exists) {
log_print("Conversion starts after activation");
return ret;
}
ret = lvconvert_poll(cmd, lp.lv_name_full,
arg_count(cmd, background_ARG) ? 1U : 0);
lp.wait_completion ? 0 : 1U);
}
return ret;