From: Masayoshi Mizuma <msys.mizuma@gmail.com>
To: piaojun@huawei.com
Cc: virtio-fs@redhat.com, m.mizuma@jp.fujitsu.com
Subject: Re: [Virtio-fs] [PATCH] virtiofsd: Prevent multiply running with same vhost_user_socket
Date: Mon, 5 Aug 2019 22:08:50 -0400 [thread overview]
Message-ID: <5f36bf5e-d1be-2f19-1dcf-56be2fbbcb41@gmail.com> (raw)
In-Reply-To: <da22f29b-7835-e333-f611-5cfc2f74b4cb@huawei.com>
Hi Jun,
On 8/3/19 10:48 PM, piaojun wrote:
> Hi,
>
> On 2019/8/3 0:22, Masayoshi Mizuma wrote:
>> Hi Stefan,
>>
>> On Fri, Aug 02, 2019 at 04:39:30PM +0100, Stefan Hajnoczi wrote:
>>> On Thu, Aug 01, 2019 at 11:13:48AM -0400, Masayoshi Mizuma wrote:
>>>> From: Masayoshi Mizuma <m.mizuma@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@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?
>>
>> It's good point, thanks.
>> I think if the socket ramains due to the former crash, then the socket
>> should be unlinked by virtiofsd, not manualy.
>>
>> virtiofsd should detect whether the socket is in use by the other
>> virtiofsd or just remains by crash.
>> I'll try to implement that...
>
> Do you mean that we need handle these two situations?
> 1. The socket in use now;
> 2. The socket remains by the former crashed virtiofsd.
>
> I guess it's a little hard to distinguish one from the other, as user
> can start up virtiofsd simultaneously. If our goal is preventing
> multiple instances, why not using file lock to guarantee single-instance?
>
Thank you for your comments.
Yes, I'm trying to implement that by using file lock.
The unix domain socket cannot be locked because the open() fails as ENXIO,
so I'm thinking that creates a regular file corresponding the socket name,
and locks the file when virtiofsd boots. If the lock fails, then the socket
is in use. If the lock successes, then the socket is available.
I'll post the v2 patch...
Thanks!
Masa
next prev parent reply other threads:[~2019-08-06 2:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-01 15:13 [Virtio-fs] [PATCH] virtiofsd: Prevent multiply running with same vhost_user_socket Masayoshi Mizuma
2019-08-02 15:39 ` Stefan Hajnoczi
2019-08-02 16:22 ` Masayoshi Mizuma
2019-08-04 2:48 ` piaojun
2019-08-06 2:08 ` Masayoshi Mizuma [this message]
2019-08-06 2:11 ` piaojun
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5f36bf5e-d1be-2f19-1dcf-56be2fbbcb41@gmail.com \
--to=msys.mizuma@gmail.com \
--cc=m.mizuma@jp.fujitsu.com \
--cc=piaojun@huawei.com \
--cc=virtio-fs@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.