Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Dec 2021 11:53:52 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Gleb Popov <arrowd@freebsd.org>
Cc:        freebsd-hackers <freebsd-hackers@freebsd.org>
Subject:   Re: nmount(2) returns undocumented EDEADLK
Message-ID:  <Ya3dsAJWKKctVXZs@kib.kiev.ua>
In-Reply-To: <CALH631mzdOFtOqwnBgQgGfOiX-CNfME%2Boa=-XT_JK0ws8A1t3Q@mail.gmail.com>
References:  <CALH631mzdOFtOqwnBgQgGfOiX-CNfME%2Boa=-XT_JK0ws8A1t3Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Dec 06, 2021 at 10:13:59AM +0300, Gleb Popov wrote:
> Hey hackers.
> 
> I have a little program that calls the nmount(2) function in the following
> way:
> 
> - First it mounts nullfs with fstype="nullfs", from="/src" and
> fspath="/dst". This works fine.
> - Next it tries to remount it as readonly by adding MNT_UPDATE and
> MNT_RDONLY to the nmount(2) call. This call fails with errno=11 (EDEADLK)
> for some reason.
> 
> The relevant part of kdump:
> 
>  19909 coolmount CALL  nmount(0x801610380,0x6,0<><invalid>0)
>  19909 coolmount NAMI
>  "/var/db/collaboraonline/child-roots/hQN4KQVIpWNA7Pic"
>  19909 coolmount NAMI
>  "/var/db/collaboraonline/child-roots/hQN4KQVIpWNA7Pic"
>  19909 coolmount NAMI  "/var/db/collaboraonline/systemplate"
>  19909 coolmount RET   nmount -1 errno 11 Resource deadlock avoided
> 
> Does anyone have an idea what's wrong with this? I can try coming up with
> minimal repro if needed.

First, nullfs does not support remounting to ro/rw.  But this is not likely
an issue with your code, because you do get EDEADLK.  EDEADLK means that
you are trying to mount nullfs on itself, see the check at line 150 of the
file sys/fs/nullfs/null_vfsops.c.

Most likely you did not properly pass MNT_UPDATE, but then even if you did,
it would not help because, as noted, nullfs does not support remount to ro.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Ya3dsAJWKKctVXZs>