From: Sasha Levin Date: Fri, 28 Oct 2011 09:01:55 +0000 (+0200) Subject: kvm tools: Cleanup ghost socket files X-Git-Tag: next-20111101~5^2~5 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f86773662cfd8fc6ea677beb0555a214f43ddbe1;p=karo-tx-linux.git kvm tools: Cleanup ghost socket files Clean ghost socket files as part of the regular connection process. This fixes the bug of 'kvm list' failing with "Failed connecting to instance" when ghost socket files existed. Signed-off-by: Sasha Levin Signed-off-by: Pekka Enberg --- diff --git a/tools/kvm/kvm.c b/tools/kvm/kvm.c index d953b945e0a2..252bd18e9160 100644 --- a/tools/kvm/kvm.c +++ b/tools/kvm/kvm.c @@ -208,8 +208,13 @@ int kvm__get_sock_by_instance(const char *name) len = strlen(local.sun_path) + sizeof(local.sun_family); r = connect(s, &local, len); - if (r < 0) + if (r < 0 && errno == ECONNREFUSED) { + /* Clean ghost socket file */ + unlink(sock_file); + return -1; + } else if (r < 0) { die("Failed connecting to instance"); + } return s; } @@ -232,6 +237,8 @@ int kvm__enumerate_instances(int (*callback)(const char *name, int fd)) if (entry.d_type == DT_SOCK) { entry.d_name[strlen(entry.d_name)-5] = 0; sock = kvm__get_sock_by_instance(entry.d_name); + if (sock < 0) + continue; ret = callback(entry.d_name, sock); close(sock); if (ret < 0)