diff options
author | David Teigland <teigland@redhat.com> | 2015-11-24 14:47:53 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2015-11-24 14:47:53 -0600 |
commit | 1e5b4be7088759319ab83ae3a345fa5a42fd7bda (patch) | |
tree | 6c6dcd5989bd0412eb5512ad4c130f185f49e07a | |
parent | 8d86c5db03acd0b74cd919f1deb6cbfd1ff86e80 (diff) | |
download | lvm2-1e5b4be7088759319ab83ae3a345fa5a42fd7bda.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) { |