Hi, I have been working on speeding up rm. The idea is to save on kernel calls. While kernel calls are fast, not doing them is still a lot faster.
I do think there is more to gain, but before I proceed it's best to first see if this is something you're willing to commit. I guess the first five patches are trivial, I would really like some feedback on the last six. Also, I'd like to state: I provide my patches to the Cygwin sources under the 2-clause BSD license Thank you, Ben Wijen (11): syscalls.cc: unlink_nt: Try FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE first syscalls.cc: Deduplicate _remove_r syscalls.cc: Fix num_links syscalls.cc: Use EISDIR Cygwin: Move post-dir unlink check cxx.cc: Fix dynamic initialization for static local variables syscalls.cc: Implement non-path_conv dependent _unlink_nt path.cc: Allow to skip filesystem checks mount.cc: Implement poor-man's cache syscalls.cc: Expose shallow-pathconv unlink_nt dir.cc: Try unlink_nt first winsup/cygwin/Makefile.in | 2 +- winsup/cygwin/cxx.cc | 10 - winsup/cygwin/dir.cc | 6 + winsup/cygwin/fhandler_disk_file.cc | 24 +- winsup/cygwin/forkable.cc | 4 +- winsup/cygwin/mount.cc | 78 ++++-- winsup/cygwin/mount.h | 2 +- winsup/cygwin/ntdll.h | 3 +- winsup/cygwin/path.cc | 5 +- winsup/cygwin/path.h | 2 + winsup/cygwin/syscalls.cc | 366 +++++++++++++++++++++++----- 11 files changed, 384 insertions(+), 118 deletions(-) -- 2.29.2