Re: rm cannot recursively delete directory on tmpfs on RPi2

From: Mateusz Guzik <mjguzik_at_gmail.com>
Date: Fri, 7 Dec 2018 10:59:41 +0100
On 12/7/18, Michal Meloun <melounmichal_at_gmail.com> wrote:
>
>
> On 07.12.2018 7:25, Mateusz Guzik wrote:
>> On 12/7/18, Jia-Shiun Li <jiashiun_at_gmail.com> wrote:
>>> On Fri, Dec 7, 2018 at 12:36 AM Alan Somers <asomers_at_freebsd.org> wrote:
>>>
>>>> On Wed, Dec 5, 2018 at 10:18 PM Jia-Shiun Li <jiashiun_at_gmail.com>
>>>> wrote:
>>>>>
>>>>> amd64 and RPi3 do not have this issue.
>>>>>
>>>>> jsli_at_rpi2:/home/jsli 13:04 # uname -a
>>>>> FreeBSD rpi2 13.0-CURRENT FreeBSD 13.0-CURRENT r341419 GENERIC-NODEBUG
>>>> arm
>>>>> jsli_at_rpi2:/home/jsli 13:05 # mount -t tmpfs tmpfs /mnt
>>>>> jsli_at_rpi2:/home/jsli 13:05 # cd /mnt
>>>>> jsli_at_rpi2:/mnt 13:05 # tar xf
>>>>> /usr/ports/distfiles/sqlite-autoconf-3260000.tar.gz
>>>>> jsli_at_rpi2:/mnt 13:05 # rm -rf sqlite-autoconf-3260000/
>>>>> rm: sqlite-autoconf-3260000/tea: Operation not permitted
>>>>> rm: sqlite-autoconf-3260000/: Directory not empty
>>>>> jsli_at_rpi2:/mnt 13:05 #
>>>>>
>>>>> -Jia-Shiun
>>>>
>>>> Did you check for file flags?  Do "ls -lod
>>>> sqlite-autoconf-3260000/tea".
>>>>
>>>>
>>> Unlikely caused by flags I think.
>>>
>>> jsli_at_rpi2:/home/jsli # mount -t tmpfs tmpfs /mnt
>>> jsli_at_rpi2:/home/jsli # cd /mnt
>>> jsli_at_rpi2:/mnt # ls -R
>>> jsli_at_rpi2:/mnt # mkdir dir
>>> jsli_at_rpi2:/mnt # ls -R
>>> dir/
>>> ls: dir: directory causes a cycle
>>> jsli_at_rpi2:/mnt #
>>>
>>>
>>> looks inode no for directories are wrong
>>>
>>> jsli_at_rpi2:/mnt # ll -ia
>>> total 4
>>> 2 drwxr-xr-x   3 root  wheel   36 Dec  7 09:55 ./
>>> 2 drwxr-xr-x  23 root  wheel  512 Dec  3 17:04 ../
>>> 2 drwxr-xr-x   2 root  wheel    0 Dec  7 09:55 dir/
>>> jsli_at_rpi2:/mnt # ll -ia dir
>>> total 0
>>> 2 drwxr-xr-x  2 root  wheel   0 Dec  7 09:55 ./
>>> 2 drwxr-xr-x  3 root  wheel  36 Dec  7 09:55 ../
>>> jsli_at_rpi2:/mnt #
>>>
>>
>> Ouch.
>>
>> Looks like 64-bit atomic on 32-bit arm don't work as advertised.
>>
>> While they should be fixed, I have been meaning to commit the following
>> which will have a side effect of taking care of the bug you ran into:
>>
>
> Mateusz,
> where you see problem with 64-bit atomic on arm? I'm not aware of any
> problem in this area.

inode allocation for tmpfs (and other places) was recently changed to use
64-bit atomics (excluding mips and powerpc). So far atomic_fetchadd_64
failing to bump the number on 32-bit arm (at least for the variant used
by whatever is put on rpi2) looks like a decent explanation. The code
definitely works on amd64.

-- 
Mateusz Guzik <mjguzik gmail.com>
Received on Fri Dec 07 2018 - 08:59:43 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:19 UTC