[Virtio-fs] [PATCH] virtiofsd: Prevent multiply running with same vhost_user_socket

Stefan Hajnoczi stefanha at redhat.com
Fri Aug 2 15:39:30 UTC 2019


On Thu, Aug 01, 2019 at 11:13:48AM -0400, Masayoshi Mizuma wrote:
> From: Masayoshi Mizuma <m.mizuma at jp.fujitsu.com>
> 
> virtiofsd can run multiply even if the vhost_user_socket is
> same path.
> 
>   ]# ./virtiofsd -o vhost_user_socket=/tmp/vhostqemu -o source=/tmp/share &
>   [1] 244965
>   virtio_session_mount: Waiting for vhost-user socket connection...
>   ]# ./virtiofsd -o vhost_user_socket=/tmp/vhostqemu -o source=/tmp/share &
>   [2] 244966
>   virtio_session_mount: Waiting for vhost-user socket connection...
>   ]#
> 
> The file access from the guest works because the second virtiofsd
> handles that, however, the user will get confused the situation
> and may be the cause of unexpected problem. So it's better to
> prevent the multiple running.
> 
> Change unlink() of the socket to the exit of virtiofsd so that the
> latter virtiofsd can fail on bind() as EADDRINUSE.
> 
> Signed-off-by: Masayoshi Mizuma <m.mizuma at jp.fujitsu.com>
> ---
>  contrib/virtiofsd/fuse_lowlevel.c | 1 +
>  contrib/virtiofsd/fuse_virtio.c   | 1 -
>  2 files changed, 1 insertion(+), 1 deletion(-)

This patch makes the UNIX domain socket act similar to a pidfile or
lockfile.  Does the user need to clean up the UNIX domain socket
manually before virtiofsd can restart again after a crash?

This can be a robustness/reliability problem because we must assume that
crashes happen and recovery should not require human intervention.

On the other hand, there are plenty of daemons that have long-lived UNIX
domain socket paths.  How do they handle crash recovery?

Stefan




More information about the Virtio-fs mailing list