Skip to content
  • Andre Przywara's avatar
    run: Check for ghost socket file upon VM creation · ef5b941f
    Andre Przywara authored
    
    
    Kvmtool creates a (debug) UNIX socket file for each VM, using its
    (possibly auto-generated) name as the filename. There is a check using
    access(), which bails out with an error message if a socket with that
    name already exists.
    
    Aside from this check being unnecessary, as the bind() call later would
    complain as well, this is also racy. But more annoyingly the bail out is
    not needed most of the time: an existing socket inode is most likely just
    an orphaned leftover from a previous kvmtool run, which just failed to
    remove that file, because of a crash, for instance.
    
    Upon finding such a collision, let's first try to connect to that socket,
    to detect if there is still a kvmtool instance listening on the other
    end. If that fails, this socket will never come back to life, so we can
    safely clean it up and reuse the name for the new guest.
    However if the connect() succeeds, there is an actual live kvmtool
    instance using this name, so not proceeding is the only option.
    This should never happen with the (PID based) automatically generated
    names, though.
    
    This avoids an annoying (and not helpful) error message and helps
    automated kvmtool runs to proceed in more cases.
    
    Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    ef5b941f