diff options
author | David Teigland <teigland@redhat.com> | 2015-11-24 14:47:53 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2015-11-30 10:57:30 -0600 |
commit | 1f357532bb8d6094bffecde48ad8d4b8e4fc430c (patch) | |
tree | e689d9061880cff873fa565b980754c75883850f | |
parent | cd4d2cff97dc4388080a06cb416861d9139d9d09 (diff) | |
download | lvm2-1f357532bb8d6094bffecde48ad8d4b8e4fc430c.tar.gz |
lvmetad: include both vgid and vgname in lookup request
When the command already knows both the vgid and vgname,
it should send both to lvmetad for a more exact request,
and it can save lvmetad the work of a name lookup.
-rw-r--r-- | lib/cache/lvmetad.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/lib/cache/lvmetad.c b/lib/cache/lvmetad.c index dced80a14..78844c4c6 100644 --- a/lib/cache/lvmetad.c +++ b/lib/cache/lvmetad.c @@ -520,18 +520,29 @@ struct volume_group *lvmetad_vg_lookup(struct cmd_context *cmd, const char *vgna if (vgid) { if (!id_write_format((const struct id*)vgid, uuid, sizeof(uuid))) return_NULL; - log_debug_lvmetad("Asking lvmetad for VG %s (%s)", uuid, vgname ? : "name unknown"); + } + + if (vgid && vgname) { + log_debug_lvmetad("Asking lvmetad for VG %s %s", uuid, vgname); + reply = _lvmetad_send("vg_lookup", + "uuid = %s", uuid, + "name = %s", vgname, + NULL); + diag_name = uuid; + + } else if (vgid) { + log_debug_lvmetad("Asking lvmetad for VG vgid %s", uuid); reply = _lvmetad_send("vg_lookup", "uuid = %s", uuid, NULL); diag_name = uuid; - } else { - if (!vgname) { - log_error(INTERNAL_ERROR "VG name required (VGID not available)"); - reply = _lvmetad_send("vg_lookup", "name = %s", "MISSING", NULL); - goto out; - } + + } else if (vgname) { log_debug_lvmetad("Asking lvmetad for VG %s", vgname); reply = _lvmetad_send("vg_lookup", "name = %s", vgname, NULL); diag_name = vgname; + + } else { + log_error(INTERNAL_ERROR "VG name required (VGID not available)"); + goto out; } if (_lvmetad_handle_reply(reply, "lookup VG", diag_name, &found) && found) { |