Bug 41846

Summary: После обновления до mc-4.8.27-alt1 нет списка файлов в каталоге, подключенном через sshfs
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: mcAssignee: Sergey Y. Afonin <asy>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aborodin, asy, iv
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Vitaly Lipatov 2022-02-01 17:59:41 MSK
После обновления до mc-4.8.27-alt1 перестал отображаться списков файлов в каталоге, подключенном через sshfs:
$ sshfs remotehost:/remote/path local_dir -ocache=no

Если убрать параметр cache=no, проблемы не возникает.
При этом mc не выдаёт никаких ошибок, а другие программы (ls) корректно работают.
Comment 1 Sergey Y. Afonin 2022-02-01 19:25:19 MSK
В p8 не воспроизводится, а в p10 да, есть такое дело. Интересно, в чём отличие. И из p8, и из p10 цеплялся к хосту с p8.
Comment 2 Sergey Y. Afonin 2022-02-01 19:26:36 MSK
И CVE-2021-36370 про sftp как раз, хотя к данному примеру вроде это не должно относиться.
Comment 3 Vitaly Lipatov 2022-02-02 00:13:24 MSK
(Ответ для Sergey Y. Afonin на комментарий #1)
> В p8 не воспроизводится, а в p10 да, есть такое дело. Интересно, в чём
> отличие. И из p8, и из p10 цеплялся к хосту с p8.
Проверил, что если цепляться не к p8, а к p10, ошибка та же есть.

Не проверял, но может это какая-то оптимизация? Чтобы mc не тормозил — не ответили ему сразу, и ладно :)
Comment 4 Sergey Y. Afonin 2022-02-02 01:26:11 MSK
(In reply to Vitaly Lipatov from comment #3)

> Не проверял, но может это какая-то оптимизация?

Так я его до p8 включительно обновил. В p8 тоже 4.8.27, сборка только хелпером rpm отличается от сборок в p9 и новее.
Comment 5 Andrew Borodin 2022-02-02 08:16:17 MSK
https://midnight-commander.org/ticket/4289
Comment 6 Sergey Y. Afonin 2022-02-02 13:45:33 MSK
(In reply to Andrew Borodin from comment #5)

> https://midnight-commander.org/ticket/4289

То есть получается, что регрессия возникла между 4.8.25 (в ALT работало) и 4.8.26 (в ALT эта версия не собиралась). При этом воспроизводимость зависит и от чего-то ещё, так как в ALT p8 c 4.8.27-alt0.M80P.1 тоже не воспроизводится.
Comment 7 Andrew Borodin 2022-02-02 21:49:30 MSK
(Ответ для Sergey Y. Afonin на комментарий #6)
> (In reply to Andrew Borodin from comment #5)
> 
> > https://midnight-commander.org/ticket/4289
> 
> То есть получается, что регрессия возникла между 4.8.25 (в ALT работало) и
> 4.8.26 (в ALT эта версия не собиралась).

Видимо, это результат https://midnight-commander.org/ticket/3987.

Похоже, у sshfs проблемы с rewinddir(3).

См. также https://github.com/trapexit/mergerfs/issues/877
Comment 8 Andrew Borodin 2022-02-03 09:00:19 MSK
(In reply to Andrew Borodin from comment #7)
> См. также https://github.com/trapexit/mergerfs/issues/877

Тут есть код тестовой программы. Попробуйте запустить её на sshfs.
Comment 9 Vitaly Lipatov 2022-02-03 12:43:39 MSK
(Ответ для Andrew Borodin на комментарий #8)
> (In reply to Andrew Borodin from comment #7)
> > См. также https://github.com/trapexit/mergerfs/issues/877
> 
> Тут есть код тестовой программы. Попробуйте запустить её на sshfs.
На обычном каталоге выводит список два раза, а на смонтированном по sshfs с cache=no
second read пуст

То есть такое работает:
    d = opendir(".");
    while (e = readdir(d)) { printf("e: %s\n", e->d_name); }

Повтор уже нет:
    rewinddir(d);
    while (e = readdir(d)) { printf("e: %s\n", e->d_name); }
Comment 10 Vitaly Lipatov 2022-02-03 12:48:40 MSK
(Ответ для Vitaly Lipatov на комментарий #9)
> (Ответ для Andrew Borodin на комментарий #8)
> > (In reply to Andrew Borodin from comment #7)
> > > См. также https://github.com/trapexit/mergerfs/issues/877
> > 
> > Тут есть код тестовой программы. Попробуйте запустить её на sshfs.
> На обычном каталоге выводит список два раза, а на смонтированном по sshfs с
> cache=no
> second read пуст
> 
> То есть такое работает:
>     d = opendir(".");
>     while (e = readdir(d)) { printf("e: %s\n", e->d_name); }
> 
> Повтор уже нет:
>     rewinddir(d);
>     while (e = readdir(d)) { printf("e: %s\n", e->d_name); }

В https://github.com/trapexit/mergerfs/issues/877
описывалось, что на rewinddir идут повторы. Тут же вообще пусто.
Comment 11 Andrew Borodin 2022-02-03 15:13:30 MSK
(In reply to Vitaly Lipatov from comment #10)
> В https://github.com/trapexit/mergerfs/issues/877
> описывалось, что на rewinddir идут повторы. Тут же вообще пусто.

Ну так файловые системы же разные. Там mergerfs, тут sshfs.
Comment 12 Sergey Y. Afonin 2022-02-03 17:10:15 MSK
(In reply to Vitaly Lipatov from comment #10)

> В https://github.com/trapexit/mergerfs/issues/877
> описывалось, что на rewinddir идут повторы. Тут же вообще пусто.

Может mergerfs обновить для начала? :-) Там mergerfs 2.33.3 уже на github. Или сложности есть?
Comment 13 Vitaly Lipatov 2022-03-31 09:58:03 MSK
(Ответ для Andrew Borodin на комментарий #11)
> (In reply to Vitaly Lipatov from comment #10)
> > В https://github.com/trapexit/mergerfs/issues/877
> > описывалось, что на rewinddir идут повторы. Тут же вообще пусто.
> 
> Ну так файловые системы же разные. Там mergerfs, тут sshfs.
Это было просто для примера. Я-то думаю, что проблема вообще в fuse. Ну или в неправильных попытках в mc обойти какую-то багу.
Comment 14 Sergey Y. Afonin 2024-09-18 17:42:23 MSK
В p11 c 4.8.32-alt1 на текущий момент воспроизводится.