Ticket #4364 (closed defect: fixed)
"Remote I/O error (121)" trying to delete a remote directory containg files.
Reported by: | gv | Owned by: | andrew_b |
---|---|---|---|
Priority: | major | Milestone: | 4.8.29 |
Component: | mc-vfs | Version: | 4.8.27 |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Branch state: | merged | Votes for changeset: | committed-master |
Description (last modified by andrew_b) (diff)
Description of the problem:
Most of the times I cannot delete directories that have files or others directories on a remote machine (I connect using cd sh://user@host/home/user). I get something like this:
Cannot remove directory "/sh://user@h~home/user/1 Remote I/O error (121) [ Skip ] [ Skip all ] [ Retry ] [ Abort ]
For most of directories in /home/user it does not work. Occasionally, for some directories, it works. And I cannot find a pattern here.
The only workaround for this issue is to first manually remove files from the directory and then remove the directory itself. This is easy if the directory tree is small. But for sure not feasible for a large directory tree.
Steps to reproduce:
- ssh user@host
- mkdir 1
- copy some random files into directory 1
- connect from mc to the remote host using sh://user@host/home/user
- try to remove directory 1 by pressing F8 on the directory.
$ mc -V GNU Midnight Commander 4.8.28 Built with GLib 2.56.4 Built with S-Lang 2.3.2 with terminfo database With builtin Editor and Aspell support With optional subshell support With support for background operations With mouse support on xterm and Linux console With internationalization support With multiple codepages support With ext2fs attributes support Virtual File Systems: cpiofs, tarfs, sfs, extfs, ftpfs, fish Data types: char: 8; int: 32; long: 64; void *: 64; size_t: 64; off_t: 64;
$ mc -V Home directory: /home/user Profile root directory: /home/user [System data] Config directory: /etc/mc/ Data directory: /usr/share/mc/ File extension handlers: /usr/libexec/mc/ext.d/ VFS plugins and scripts: /usr/libexec/mc/ extfs.d: /usr/libexec/mc/extfs.d/ fish: /usr/libexec/mc/fish/ [User data] Config directory: /home/user/.config/mc/ Data directory: /home/user/.local/share/mc/ skins: /home/user/.local/share/mc/skins/ extfs.d: /home/user/.local/share/mc/extfs.d/ fish: /home/user/.local/share/mc/fish/ mcedit macros: /home/user/.local/share/mc/mc.macros mcedit external macros: /home/user/.local/share/mc/mcedit/macros.d/macro.* Cache directory: /home/user/.cache/mc/
Thank you!
Change History
comment:1 Changed 2 years ago by andrew_b
- Status changed from new to accepted
- Description modified (diff)
- Version changed from master to 4.8.27
- Branch state changed from no branch to on review
- Milestone changed from Future Releases to 4.8.29
- Owner set to andrew_b
comment:2 Changed 2 years ago by zaytsev
I would add a comment to the source code referencing this ticket to explain why these checks are needed (that is for VFS support). Otherwise, someone will surely optimise it again a decade later ;-)
comment:3 Changed 2 years ago by andrew_b
I'll add a comment to the commit before merge:
fish's readdir() doesn't return "." and ".." entries.
comment:4 Changed 2 years ago by zaytsev
Well, I meant the source code, not the commit message. Surely you won't be blaming every line before considering whether to change it or not...
comment:5 Changed 2 years ago by ossi
when something seems obviously wrong, i actually tend to blame it to figure out whether i'm missing something. tough i suppose i may be somewhat exceptional in that regard.
code comments also have the unfortunate habit of going out of sync with reality, so their "cautionary" value tends to be limited in practice.
nonetheless, i agree that they should be added as a matter of best practice.
comment:6 Changed 23 months ago by andrew_b
- Votes for changeset set to andrew_b
- Branch state changed from on review to approved
comment:7 Changed 23 months ago by andrew_b
- Status changed from accepted to testing
- Votes for changeset changed from andrew_b to committed-master
- Resolution set to fixed
- Branch state changed from approved to merged
Merged to master: [7bbaa13644c001ffdb900fe6b8460907c23e326b].
git log --pretty=oneline 3a3811c52..7bbaa1364
Branch: 4364_fish_remove_nonempty_dir
changeset:d4d6cec52da8fffbab5635af6d0149a10a59dcb6