1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

Replicator: activate checks for missing vgs

Activation needs to have all remote VGs locked to pass for replicator.
So if activated LV is replicator-dev LV - read all remote VGs.
This commit is contained in:
Zdenek Kabelac 2010-05-21 14:34:01 +00:00
parent b5f33faf9f
commit 9249fb12b8
2 changed files with 20 additions and 4 deletions

View File

@ -1,6 +1,7 @@
Version 2.02.67 -
===============================
Check for missing VGs before taking lock_lv_vol (for Replicator).
Activation code read and releases also remote VGs (Replicator).
Check for missing VGs before taking lock_vol (Replicator).
Update process_each_lv_in_vg() to use cmd_vg structure.
Update _process_one_vg() to work with cmd_vg structure.
Add functions for read and release VGs list.

View File

@ -865,6 +865,9 @@ static int _lv_suspend(struct cmd_context *cmd, const char *lvid_s,
goto out;
}
if (!lv_read_replicator_vgs(lv))
goto_out;
lv_calculate_readahead(lv, NULL);
/* If VG was precommitted, preload devices for the LV */
@ -894,8 +897,10 @@ static int _lv_suspend(struct cmd_context *cmd, const char *lvid_s,
out:
if (lv_pre)
vg_release(lv_pre->vg);
if (lv)
if (lv) {
lv_release_replicator_vgs(lv);
vg_release(lv->vg);
}
return r;
}
@ -1025,6 +1030,9 @@ int lv_deactivate(struct cmd_context *cmd, const char *lvid_s)
goto_out;
}
if (!lv_read_replicator_vgs(lv))
goto_out;
lv_calculate_readahead(lv, NULL);
if (!monitor_dev_for_events(cmd, lv, 0))
@ -1038,8 +1046,10 @@ int lv_deactivate(struct cmd_context *cmd, const char *lvid_s)
if (!lv_info(cmd, lv, &info, 1, 0) || info.exists)
r = 0;
out:
if (lv)
if (lv) {
lv_release_replicator_vgs(lv);
vg_release(lv->vg);
}
return r;
}
@ -1118,6 +1128,9 @@ static int _lv_activate(struct cmd_context *cmd, const char *lvid_s,
goto out;
}
if (!lv_read_replicator_vgs(lv))
goto_out;
lv_calculate_readahead(lv, NULL);
if (exclusive)
@ -1133,8 +1146,10 @@ static int _lv_activate(struct cmd_context *cmd, const char *lvid_s,
stack;
out:
if (lv)
if (lv) {
lv_release_replicator_vgs(lv);
vg_release(lv->vg);
}
return r;
}