public inbox for fstests@vger.kernel.org
 help / color / mirror / Atom feed
From: Naohiro Aota <Naohiro.Aota@wdc.com>
To: Naohiro Aota <Naohiro.Aota@wdc.com>, Zorro Lang <zlang@redhat.com>
Cc: "fstests@vger.kernel.org" <fstests@vger.kernel.org>,
	"djwong@kernel.org" <djwong@kernel.org>
Subject: Re: [PATCH] tools/run_privatens: check if it is mount point for --make-private
Date: Tue, 4 Mar 2025 01:38:48 +0000	[thread overview]
Message-ID: <D873JHORR7IB.2VEFHOF3HQMMY@wdc.com> (raw)
In-Reply-To: <D86O11SKYP75.1NJE84UIKCEYD@wdc.com>

On Mon Mar 3, 2025 at 10:29 PM JST, Naohiro Aota wrote:
> On Mon Mar 3, 2025 at 7:10 PM JST, Zorro Lang wrote:
>> On Mon, Mar 03, 2025 at 03:42:09PM +0900, Naohiro Aota wrote:
>>> While /tmp is mounted with tmpfs in the most setup, it still can be a non-mount
>>> point. For example, I'm running the fstests in a container, which does not
>>> mount /tmp inside the container.
>>> 
>>> Running any test case on such system results in having the following error
>>> printed, which leads to all the test cases fail due to the output difference.
>>> 
>>>   mount: /tmp: not mount point or bad option.
>>>          dmesg(1) may have more information after failed mount system call.
>>> 
>>> These lines are printed by the "mount --make-private" command. So, fix that by
>>> using mountpoint command to check if the directory is a mount point or not.
>>> 
>>> Fixes: 247ab01fa227 ("check: run tests in a private pid/mount namespace")
>>> Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
>>> ---
>>>  tools/run_privatens | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>> 
>>> diff --git a/tools/run_privatens b/tools/run_privatens
>>> index df94974ab30c..c52e0128b8f9 100755
>>> --- a/tools/run_privatens
>>> +++ b/tools/run_privatens
>>> @@ -8,7 +8,7 @@
>>>  
>>>  if [ -n "${FSTESTS_ISOL}" ]; then
>>>  	for path in /proc /tmp; do
>>> -		mount --make-private "$path"
>>> +		mountpoint "$path" >/dev/null && mount --make-private "$path"
>>
>> Oh, if /tmp isn't a mountpoint on your system, don't you need to think about ...
>>
>>>  	done
>>>  	mount -t proc proc /proc
>>>  	mount -t tmpfs tmpfs /tmp
>>         ^^^^^^^^^^^^^^^^^^^^^^^^^
>>
>> ... this step? I think the first run_privatens process will remain a "mounted"
>> /tmp on your system.
>>
>> And then later tests will use this tmpfs. That's nearly equal to "We always
>> make sure there's a tmpfs mount on /tmp at the beginning of fstests running".
>
> That does not happen because we are already in a mount namespace created
> by nsexec. The mounted "/tmp" is local to each test, and each test
> showed the error above.
>
>>
>> But if we don't run that "mount tmpfs" step, I think it's not what this script
>> wants (to isolate the data in /tmp). Right?
>
> I guess we can do these instead?
>
> mount --make-private -t proc proc /proc
> mount --make-private -t tmpfs tmpfs /tmp
>
> Actually, I'm not quite confindent that we really need "--make-private"
> here. As we mount new instance of proc and tmpfs and we don't bind them,
> I don't see much point making them private.

No, I was wrong. We still need to make them private, not to propagate
"mount tmpfs" or "mount proc" to the outside. If not, we will see new
instance of tmpfs mounted on /tmp in the PID 1 environment, which
breaks several applications :(.

So, in the end, I think my patch did it correctly, no?

>
>>
>> Thanks,
>> Zorro
>>
>>
>>
>>> -- 
>>> 2.48.1
>>> 
>>> 

  reply	other threads:[~2025-03-04  1:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-03  6:42 [PATCH] tools/run_privatens: check if it is mount point for --make-private Naohiro Aota
2025-03-03 10:10 ` Zorro Lang
2025-03-03 13:29   ` Naohiro Aota
2025-03-04  1:38     ` Naohiro Aota [this message]
2025-03-04 18:03       ` Darrick J. Wong

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=D873JHORR7IB.2VEFHOF3HQMMY@wdc.com \
    --to=naohiro.aota@wdc.com \
    --cc=djwong@kernel.org \
    --cc=fstests@vger.kernel.org \
    --cc=zlang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox