- From d3ef0b00c21fd271bb1d26959256b235f732de4f Mon Sep 17 00:00:00 2001
- From: Dan Shelton <dan.f.shelton@gmail.com>
- Date: Mon, 3 Jun 2024 15:59:53 +0200
- Subject: [PATCH 1/4] daemon: Sync from_kernel.h+debug with ReactOS+Win10
- headers
- Sync from_kernel.h+debug with ReactOS+Win10 headers
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- daemon/daemon_debug.c | 25 +++++++
- daemon/from_kernel.h | 157 ++++++++++++++++++++++++++----------------
- 2 files changed, 122 insertions(+), 60 deletions(-)
- diff --git a/daemon/daemon_debug.c b/daemon/daemon_debug.c
- index d0d3e0a..df9620a 100644
- --- a/daemon/daemon_debug.c
- +++ b/daemon/daemon_debug.c
- @@ -713,6 +713,31 @@ const char *FILE_INFORMATION_CLASS2string(int fic)
- FIC_TO_STRLITERAL(FileNormalizedNameInformation)
- FIC_TO_STRLITERAL(FileNetworkPhysicalNameInformation)
- FIC_TO_STRLITERAL(FileIdGlobalTxDirectoryInformation)
- + FIC_TO_STRLITERAL(FileIsRemoteDeviceInformation)
- + FIC_TO_STRLITERAL(FileUnusedInformation)
- + FIC_TO_STRLITERAL(FileNumaNodeInformation)
- + FIC_TO_STRLITERAL(FileStandardLinkInformation)
- + FIC_TO_STRLITERAL(FileRemoteProtocolInformation)
- + FIC_TO_STRLITERAL(FileRenameInformationBypassAccessCheck)
- + FIC_TO_STRLITERAL(FileLinkInformationBypassAccessCheck)
- + FIC_TO_STRLITERAL(FileVolumeNameInformation)
- + FIC_TO_STRLITERAL(FileIdInformation)
- + FIC_TO_STRLITERAL(FileIdExtdDirectoryInformation)
- + FIC_TO_STRLITERAL(FileReplaceCompletionInformation)
- + FIC_TO_STRLITERAL(FileHardLinkFullIdInformation)
- + FIC_TO_STRLITERAL(FileIdExtdBothDirectoryInformation)
- + FIC_TO_STRLITERAL(FileDispositionInformationEx)
- + FIC_TO_STRLITERAL(FileRenameInformationEx)
- + FIC_TO_STRLITERAL(FileRenameInformationExBypassAccessCheck)
- + FIC_TO_STRLITERAL(FileDesiredStorageClassInformation)
- + FIC_TO_STRLITERAL(FileStatInformation)
- + FIC_TO_STRLITERAL(FileMemoryPartitionInformation)
- + FIC_TO_STRLITERAL(FileStatLxInformation)
- + FIC_TO_STRLITERAL(FileCaseSensitiveInformation)
- + FIC_TO_STRLITERAL(FileLinkInformationEx)
- + FIC_TO_STRLITERAL(FileLinkInformationExBypassAccessCheck)
- + FIC_TO_STRLITERAL(FileStorageReserveIdInformation)
- + FIC_TO_STRLITERAL(FileCaseSensitiveInformationForceAccessCheck)
- }
- return "<unknown FILE_INFORMATION_CLASS>";
- }
- diff --git a/daemon/from_kernel.h b/daemon/from_kernel.h
- index 221ee3b..c135dc5 100644
- --- a/daemon/from_kernel.h
- +++ b/daemon/from_kernel.h
- @@ -59,56 +59,82 @@
- #define FILE_MAXIMUM_DISPOSITION 0x00000005
- typedef enum _FILE_INFORMATION_CLASS {
- - FileDirectoryInformation = 1,
- - FileFullDirectoryInformation, // 2
- - FileBothDirectoryInformation, // 3
- - FileBasicInformation, // 4
- - FileStandardInformation, // 5
- - FileInternalInformation, // 6
- - FileEaInformation, // 7
- - FileAccessInformation, // 8
- - FileNameInformation, // 9
- - FileRenameInformation, // 10
- - FileLinkInformation, // 11
- - FileNamesInformation, // 12
- - FileDispositionInformation, // 13
- - FilePositionInformation, // 14
- - FileFullEaInformation, // 15
- - FileModeInformation, // 16
- - FileAlignmentInformation, // 17
- - FileAllInformation, // 18
- - FileAllocationInformation, // 19
- - FileEndOfFileInformation, // 20
- - FileAlternateNameInformation, // 21
- - FileStreamInformation, // 22
- - FilePipeInformation, // 23
- - FilePipeLocalInformation, // 24
- - FilePipeRemoteInformation, // 25
- - FileMailslotQueryInformation, // 26
- - FileMailslotSetInformation, // 27
- - FileCompressionInformation, // 28
- - FileObjectIdInformation, // 29
- - FileCompletionInformation, // 30
- - FileMoveClusterInformation, // 31
- - FileQuotaInformation, // 32
- - FileReparsePointInformation, // 33
- - FileNetworkOpenInformation, // 34
- - FileAttributeTagInformation, // 35
- - FileTrackingInformation, // 36
- - FileIdBothDirectoryInformation, // 37
- - FileIdFullDirectoryInformation, // 38
- - FileValidDataLengthInformation, // 39
- - FileShortNameInformation, // 40
- - FileIoCompletionNotificationInformation, // 41
- - FileIoStatusBlockRangeInformation, // 42
- - FileIoPriorityHintInformation, // 43
- - FileSfioReserveInformation, // 44
- - FileSfioVolumeInformation, // 45
- - FileHardLinkInformation, // 46
- - FileProcessIdsUsingFileInformation, // 47
- - FileNormalizedNameInformation, // 48
- - FileNetworkPhysicalNameInformation, // 49
- - FileIdGlobalTxDirectoryInformation, // 50
- + FileDirectoryInformation = 1,
- + FileFullDirectoryInformation, // 2
- + FileBothDirectoryInformation, // 3
- + FileBasicInformation, // 4
- + FileStandardInformation, // 5
- + FileInternalInformation, // 6
- + FileEaInformation, // 7
- + FileAccessInformation, // 8
- + FileNameInformation, // 9
- + FileRenameInformation, // 10
- + FileLinkInformation, // 11
- + FileNamesInformation, // 12
- + FileDispositionInformation, // 13
- + FilePositionInformation, // 14
- + FileFullEaInformation, // 15
- + FileModeInformation, // 16
- + FileAlignmentInformation, // 17
- + FileAllInformation, // 18
- + FileAllocationInformation, // 19
- + FileEndOfFileInformation, // 20
- + FileAlternateNameInformation, // 21
- + FileStreamInformation, // 22
- + FilePipeInformation, // 23
- + FilePipeLocalInformation, // 24
- + FilePipeRemoteInformation, // 25
- + FileMailslotQueryInformation, // 26
- + FileMailslotSetInformation, // 27
- + FileCompressionInformation, // 28
- + FileObjectIdInformation, // 29
- + FileCompletionInformation, // 30
- + FileMoveClusterInformation, // 31
- + FileQuotaInformation, // 32
- + FileReparsePointInformation, // 33
- + FileNetworkOpenInformation, // 34
- + FileAttributeTagInformation, // 35
- + FileTrackingInformation, // 36
- + FileIdBothDirectoryInformation, // 37
- + FileIdFullDirectoryInformation, // 38
- + FileValidDataLengthInformation, // 39
- + FileShortNameInformation, // 40
- + FileIoCompletionNotificationInformation, // 41
- + FileIoStatusBlockRangeInformation, // 42
- + FileIoPriorityHintInformation, // 43
- + FileSfioReserveInformation, // 44
- + FileSfioVolumeInformation, // 45
- + FileHardLinkInformation, // 46
- + FileProcessIdsUsingFileInformation, // 47
- + FileNormalizedNameInformation, // 48
- + FileNetworkPhysicalNameInformation, // 49
- + FileIdGlobalTxDirectoryInformation, // 50
- + FileIsRemoteDeviceInformation, // 51
- + FileUnusedInformation, // 52
- + FileNumaNodeInformation, // 53
- + FileStandardLinkInformation, // 54
- + FileRemoteProtocolInformation, // 55
- + FileRenameInformationBypassAccessCheck, // 56
- + FileLinkInformationBypassAccessCheck, // 57
- + FileVolumeNameInformation, // 58
- + FileIdInformation, // 59
- + FileIdExtdDirectoryInformation, // 60
- + FileReplaceCompletionInformation, // 61
- + FileHardLinkFullIdInformation, // 62
- + FileIdExtdBothDirectoryInformation, // 63
- + FileDispositionInformationEx, // 64
- + FileRenameInformationEx, // 65
- + FileRenameInformationExBypassAccessCheck, // 66
- + FileDesiredStorageClassInformation, // 67
- + FileStatInformation, // 68
- + FileMemoryPartitionInformation, // 69
- + FileStatLxInformation, // 70
- + FileCaseSensitiveInformation, // 71
- + FileLinkInformationEx, // 72
- + FileLinkInformationExBypassAccessCheck, // 73
- + FileStorageReserveIdInformation, // 74
- + FileCaseSensitiveInformationForceAccessCheck, // 75
- +
- FileMaximumInformation
- } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
- @@ -218,16 +244,20 @@ typedef struct _FILE_NETWORK_OPEN_INFORMATION {
- /* wdm.h */
- typedef enum _FSINFOCLASS {
- - FileFsVolumeInformation = 1,
- - FileFsLabelInformation, // 2
- - FileFsSizeInformation, // 3
- - FileFsDeviceInformation, // 4
- - FileFsAttributeInformation, // 5
- - FileFsControlInformation, // 6
- - FileFsFullSizeInformation, // 7
- - FileFsObjectIdInformation, // 8
- - FileFsDriverPathInformation, // 9
- - FileFsVolumeFlagsInformation,// 10
- + FileFsVolumeInformation = 1,
- + FileFsLabelInformation, // 2
- + FileFsSizeInformation, // 3
- + FileFsDeviceInformation, // 4
- + FileFsAttributeInformation, // 5
- + FileFsControlInformation, // 6
- + FileFsFullSizeInformation, // 7
- + FileFsObjectIdInformation, // 8
- + FileFsDriverPathInformation, // 9
- + FileFsVolumeFlagsInformation, // 10
- + FileFsSectorSizeInformation, // 11
- + FileFsDataCopyInformation, // 12
- + FileFsMetadataSizeInformation, // 13
- + FileFsFullSizeInformationEx, // 14
- FileFsMaximumInformation
- } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
- @@ -241,6 +271,8 @@ typedef enum _FSINFOCLASS {
- #define FILE_SUPPORTS_SPARSE_FILES 0x00000040
- #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
- #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
- +#define FILE_RETURNS_CLEANUP_RESULT_INFO 0x00000200
- +#define FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x00000400
- #define FILE_VOLUME_IS_COMPRESSED 0x00008000
- #define FILE_SUPPORTS_OBJECT_IDS 0x00010000
- #define FILE_SUPPORTS_ENCRYPTION 0x00020000
- @@ -252,6 +284,11 @@ typedef enum _FSINFOCLASS {
- #define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000
- #define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
- #define FILE_SUPPORTS_USN_JOURNAL 0x02000000
- +#define FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000
- +#define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000
- +#define FILE_SUPPORTS_SPARSE_VDL 0x10000000
- +#define FILE_DAX_VOLUME 0x20000000
- +#define FILE_SUPPORTS_GHOSTING 0x40000000
- typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
- ULONG FileSystemAttributes;
- --
- 2.45.1
- From 0e63bb8cab74ce6ed94602665e9f485c4912b050 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 3 Jun 2024 16:26:28 +0200
- Subject: [PATCH 2/4] cygwin: Add Cygwin download+installation instructions to
- README.bintarball.txt
- Add Cygwin download+installation instructions to README.bintarball.txt
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- cygwin/README.bintarball.txt | 57 ++++++++++++++++++++++++++----------
- 1 file changed, 41 insertions(+), 16 deletions(-)
- diff --git a/cygwin/README.bintarball.txt b/cygwin/README.bintarball.txt
- index f82f302..9865131 100644
- --- a/cygwin/README.bintarball.txt
- +++ b/cygwin/README.bintarball.txt
- @@ -119,9 +119,42 @@ NFSv4.1 client and filesystem driver for Windows 10/11
- unzip
- #
- +# 4. Download and install Cygwin (if not installed yet):
- #
- -# 4. Download:
- +# Windows 32bit-vs.-64bit can be tested from Windows cmd.exe console:
- +# Run this command:
- +# ---- snip ----
- +echo %PROCESSOR_ARCHITECTURE%
- +# ---- snip ----
- +# If this returns "AMD64" then you have a Windows 64bit kernel, and
- +# if it returns "x86" then you have Windows 32bit kernel.
- +# If you get any other value then this is a (documentation) bug.
- +
- +- Cygwin 64bit can be installed like this:
- +---- snip ----
- +# Install Cygwin 64bit on Windows 64bit with packages required by "ms-nfs41-client"
- +# (Windows NFSv4.1 client):
- +# 1. Get installer from https://cygwin.com/setup-x86_64.exe
- +curl --remote-name 'https://www.cygwin.com/setup-x86_64.exe'
- +# 2. Run installer with these arguments:
- +setup-x86_64.exe -q --site https://mirrors.kernel.org -P cygwin,cygwin-devel,cygrunsrv,cygutils,cygutils-extra,bash,bzip2,coreutils,getent,gdb,grep,hostname,less,libiconv,libiconv2,pax,pbzip2,procps-ng,sed,tar,time,util-linux,wget,libnfs,make,git,dos2unix,unzip
- +
- +
- +- Cygwin 32bit can be installed like this:
- +---- snip ----
- +# Install Cygwin 32bit on Windows 32bit with packages required by "ms-nfs41-client"
- +# (Windows NFSv4.1 client):
- +# 1. Get installer from https://www.cygwin.com/setup-x86.exe
- +curl --remote-name 'https://www.cygwin.com/setup-x86.exe'
- +# 2. Run installer with these arguments:
- +setup-x86.exe --allow-unsupported-windows -q --no-verify --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/2022/11/23/063457 -P cygwin,cygwin-devel,cygrunsrv,cygutils,cygutils-extra,bash,bzip2,coreutils,getent,gdb,grep,hostname,less,libiconv,libiconv2,pax,pbzip2,procps-ng,sed,tar,time,util-linux,wget,libnfs,make,git,dos2unix,unzip
- +---- snip ----
- +
- +
- #
- +# 5. Download "ms-nfs41-client" installation tarball:
- +#
- +# (from a Cygwin terminal)
- $ mkdir -p ~/download
- $ cd ~/download
- $ wget 'http://www.nrubsig.org/people/gisburn/work/msnfs41client/releases/testing/${bintarball.base_filename}.tar.bz2'
- @@ -130,7 +163,7 @@ SHA2-256(${bintarball.base_filename}.tar.bz2)= ${bintarball.archive_sha256hash}
- #
- -# 5. Installation (as "Administrator"):
- +# 6. Installation (as "Administrator"):
- #
- $ (cd / && tar -xf ~/download/${bintarball.base_filename}.tar.bz2 )
- $ /sbin/msnfs41client install
- @@ -138,14 +171,14 @@ $ /sbin/msnfs41client install
- #
- -# 6. Deinstallation:
- +# 7. Deinstallation:
- #
- $ (set -o xtrace ; cd / && tar -tf ~/download/${bintarball.base_filename}.tar.bz2 | while read i ; do [[ -f "$i" ]] && rm "$i" ; done)
- <REBOOT>
- #
- -# 7. Usage:
- +# 8. Usage:
- #
- # Option a)
- @@ -213,16 +246,8 @@ $ /sbin/nfs_mount
- #
- -# 8. Notes:
- +# 9. Notes:
- #
- -- Cygwin 32bit can be installed like this:
- ----- snip ----
- -# Install Cygwin 32bit on Windows 32 with packages required by "ms-nfs41-client"
- -# (Windows NFSv4.1 client):
- -# 1. Get installer from https://www.cygwin.com/setup-x86.exe
- -# 2. Run installer with these arguments:
- -setup-x86.exe --allow-unsupported-windows -q --no-verify --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/2022/11/23/063457 -P cygwin,cygwin-devel,cygrunsrv,cygutils,cygutils-extra,bash,bzip2,coreutils,getent,gdb,grep,hostname,less,libiconv,libiconv2,pax,pbzip2,procps-ng,sed,tar,time,util-linux,wget,libnfs,make,git,dos2unix,unzip
- ----- snip ----
- - Idmapping (including uid/gid mapping) between NFSv4 client and
- NFSv4 server works via /lib/msnfs41client/cygwin_idmapper.ksh,
- @@ -313,7 +338,7 @@ setup-x86.exe --allow-unsupported-windows -q --no-verify --site http://ctm.crouc
- NFSv4 client source TCP port will be >= 1024.
- #
- -# 9. Known issues:
- +# 10. Known issues:
- #
- - The kernel driver ("nfs41_driver.sys") does not yet have a
- cryptographic signature for SecureBoot - which means it will only
- @@ -364,7 +389,7 @@ setup-x86.exe --allow-unsupported-windows -q --no-verify --site http://ctm.crouc
- use $ nfs_mount -d 'H' instead #
- #
- -# 10. Notes for troubleshooting && finding bugs/debugging:
- +# 11. Notes for troubleshooting && finding bugs/debugging:
- #
- - nfsd_debug.exe has the -d option to set a level for debug
- output.
- @@ -399,7 +424,7 @@ setup-x86.exe --allow-unsupported-windows -q --no-verify --site http://ctm.crouc
- #
- -# 11. Source code:
- +# 12. Source code:
- #
- - Source code can be obtained from https://github.com/kofemann/ms-nfs41-client
- --
- 2.45.1
- From 697a8863ae5e40e7e3ef7e69115d1765e22bf4e0 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 3 Jun 2024 16:46:42 +0200
- Subject: [PATCH 3/4] tests/winsg: winsg should warn if there is no groupname
- winsg should warn if there is no groupname.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- tests/winsg/winsg.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
- diff --git a/tests/winsg/winsg.c b/tests/winsg/winsg.c
- index 9cb0a92..a0f18d8 100644
- --- a/tests/winsg/winsg.c
- +++ b/tests/winsg/winsg.c
- @@ -418,7 +418,7 @@ int main(int ac, char *av[])
- cmd_arg_index = i;
- }
- - if (cmd_runasgroup && (!newgrpname)) {
- + if ((!cmd_list_token) && (!newgrpname)) {
- (void)fprintf(stderr, "%s: No group name given.\n", av[0]);
- retval = 1;
- goto done;
- --
- 2.45.1
- From 472a7a9c59da09a4ed53ee961a1394386ac8c53b Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 3 Jun 2024 17:42:34 +0200
- Subject: [PATCH 4/4] nfs41_build_features: Disable
- |NFS41_DRIVER_WORKAROUND_FOR_GETATTR_AFTER_CLOSE_HACKS|
- Disable |NFS41_DRIVER_WORKAROUND_FOR_GETATTR_AFTER_CLOSE_HACKS| in
- nfs41_build_features.h, it seems the problems with
- GETATTR-after-CLOSE have been fixed.
- We keep the debug code in place for now until more tests have been
- made.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- nfs41_build_features.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
- diff --git a/nfs41_build_features.h b/nfs41_build_features.h
- index d197668..7d12894 100644
- --- a/nfs41_build_features.h
- +++ b/nfs41_build_features.h
- @@ -74,8 +74,9 @@
- * horrible hacks to improve stabilty because sometimes we use
- * |nfs41_open_state| afer a file close in highly parallel
- * workloads (e.g. building the gcc compiler in parallel).
- + *
- + * #define NFS41_DRIVER_WORKAROUND_FOR_GETATTR_AFTER_CLOSE_HACKS 1
- */
- -#define NFS41_DRIVER_WORKAROUND_FOR_GETATTR_AFTER_CLOSE_HACKS 1
- /*
- * NFS41_DRIVER_USE_LARGE_SOCKET_RCVSND_BUFFERS - use
- --
- 2.45.1
msnfs41client: Patches for kernel header update, CygwinInstallInstructions, winsg, disablegetattrafterclosehacks+misc, 2024-06-03
Posted by Anonymous on Mon 3rd Jun 2024 17:29
raw | new post
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.