Some FTP resources can't be listed in the Dolphin or KDE open file dialog
I've noticed this behavior only in Dolphin and KDE open file dialog.
Listing mounted directory with ls
, mc
or nautilus
works without problems.
How to reproduce:
-
Mount resource with kio-fuse:
dbus-send --session --print-reply --type=method_call \ --dest=org.kde.KIOFuse \ /org/kde/KIOFuse \ org.kde.KIOFuse.VFS.mountUrl string:ftp://mirror.yandex.ru/
-
Try to open it with Dolphin:
dolphin /run/user/1000/kio-fuse-Thhzsk/ftp/mirror.yandex.ru/
-
Dolphin hangs forever without able to display FTP root directory.
In same time command ls /run/user/1000/kio-fuse-Thhzsk/ftp/mirror.yandex.ru/
works instantly.
Plus opening same mounted directory with GNOME Nautilus works without freezes.
Mounting & listing other ftp resources than mirror.yandex.ru
works fine too...
Maybe this is Dolphin bug, don't know exactly. More investigation needed.
When Dolphin has been run under strace I see those repeating lines:
statx(AT_FDCWD, "/run/user/1000/kio-fuse-Thhzsk/ftp/mirror.yandex.ru/.hidden", AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
statx(AT_FDCWD, "/run/user/1000/kio-fuse-Thhzsk/ftp/mirror.yandex.ru/.hidden", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=1535, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=1535, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=1535, ...}, 0) = 0
openat(AT_FDCWD, "/run/user/1000/kio-fuse-Thhzsk/ftp/mirror.yandex.ru/.hidden", O_RDONLY|O_CLOEXEC) = 28
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
read(28, 0x7ffe36083340, 16384) = -1 EIO (Input/output error)
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
read(28, 0x7ffe36083340, 16384) = -1 EIO (Input/output error)
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
read(28, 0x7ffe36083340, 16384) = -1 EIO (Input/output error)
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
read(28, 0x7ffe36083340, 16384) = -1 EIO (Input/output error)
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
read(28, 0x7ffe36083340, 16384) = -1 EIO (Input/output error)
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
read(28, 0x7ffe36083340, 16384) = -1 EIO (Input/output error)
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
read(28, 0x7ffe36083340, 16384) = -1 EIO (Input/output error)
statx(28, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0555, stx_size=1, ...}) = 0
...
Edited by Yaroslav Sidlovsky