https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=527dd1b407e7d74037a19aed6e25aa36578da2f7
commit 527dd1b407e7d74037a19aed6e25aa36578da2f7 Author: Yoshinao Muramatsu <[email protected]> AuthorDate: Mon Mar 20 20:51:00 2023 +0900 Commit: Corinna Vinschen <[email protected]> CommitDate: Tue Mar 21 18:56:27 2023 +0100 Cygwin: fix unlink in container Deleting files returns STATUS_INVALID_PARAMETE on a bind mounted file system in hyper-v container with FILE_DISPOSITION_POSIX_SEMANTICS. Therefore fall back to default method. This code is suggested by Johannes Schindelin on github and I change it more simple. Signed-off-by: Yoshinao Muramatsu <[email protected]> Diff: --- winsup/cygwin/syscalls.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 3e2d42f3aa8b..4e278808a02b 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -733,7 +733,10 @@ unlink_nt (path_conv &pc, bool shareable) /* Trying to delete in-use executables and DLLs using FILE_DISPOSITION_POSIX_SEMANTICS returns STATUS_CANNOT_DELETE. Fall back to the default method. */ - if (status != STATUS_CANNOT_DELETE) + /* Additionaly that returns STATUS_INVALID_PARAMETER + on a bind mounted fs in hyper-v container. Falling back too. */ + if (status != STATUS_CANNOT_DELETE + && status != STATUS_INVALID_PARAMETER) goto out; }
