rm cannot recursively delete directory on tmpfs on RPi2

Michal Meloun melounmichal at gmail.com
Fri Dec 7 11:12:19 UTC 2018



On 07.12.2018 10:59, Mateusz Guzik wrote:
> 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.
>

Fixed in r341679.
Thanks for report.


More information about the freebsd-current mailing list