summaryrefslogtreecommitdiff
path: root/tools/pvdisplay.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2007-11-02 20:40:05 +0000
committerAlasdair Kergon <agk@redhat.com>2007-11-02 20:40:05 +0000
commitd38bf3616cc3ec1675894cb012297795897c1b50 (patch)
tree2b1113859a8d4fc47a8464cfdaaf0a6616c1ada2 /tools/pvdisplay.c
parent9c1dbeb3f18b34de8199e4a31d2465dd3b9624f4 (diff)
downloadlvm2-d38bf3616cc3ec1675894cb012297795897c1b50.tar.gz
Fix orphan-related locking in pvdisplay and pvs.
Fix missing VG unlocks in some pvchange error paths. Add some missing validation of VG names. Rename validate_vg_name() to validate_new_vg_name(). Change orphan lock to VG_ORPHANS. Change format1 to use ORPHAN as orphan VG name.
Diffstat (limited to 'tools/pvdisplay.c')
-rw-r--r--tools/pvdisplay.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/tools/pvdisplay.c b/tools/pvdisplay.c
index e77bbce2d..495705942 100644
--- a/tools/pvdisplay.c
+++ b/tools/pvdisplay.c
@@ -25,15 +25,17 @@ static int _pvdisplay_single(struct cmd_context *cmd,
uint64_t size;
const char *pv_name = pv_dev_name(pv);
+ const char *vg_name = NULL;
- if (pv_vg_name(pv)) {
- if (!lock_vol(cmd, pv_vg_name(pv), LCK_VG_READ)) {
- log_error("Can't lock %s: skipping", pv_vg_name(pv));
+ if (!is_orphan(pv)) {
+ vg_name = pv_vg_name(pv);
+ if (!lock_vol(cmd, vg_name, LCK_VG_READ)) {
+ log_error("Can't lock %s: skipping", vg_name);
return ECMD_FAILED;
}
- if (!(vg = vg_read(cmd, pv_vg_name(pv), (char *)&pv->vgid, &consistent))) {
- log_error("Can't read %s: skipping", pv_vg_name(pv));
+ if (!(vg = vg_read(cmd, vg_name, (char *)&pv->vgid, &consistent))) {
+ log_error("Can't read %s: skipping", vg_name);
goto out;
}
@@ -87,8 +89,8 @@ static int _pvdisplay_single(struct cmd_context *cmd,
pvdisplay_segments(pv);
out:
- if (pv_vg_name(pv))
- unlock_vg(cmd, pv_vg_name(pv));
+ if (vg_name)
+ unlock_vg(cmd, vg_name);
return ret;
}