- From aa4566da2912c8a57d97a58ddd6cb79de650effd Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Thu, 30 Oct 2025 12:01:52 +0100
- Subject: [PATCH 1/3] sys: Use |RxContext->CurrentIrp->MdlAddress| for
- directory query data
- Use |RxContext->CurrentIrp->MdlAddress| for directory query data.
- This also removes locking/unlocking of the memory pages, because
- |RxContext->CurrentIrp->MdlAddress| is already locked by RDBSS via
- |RxLockUserBuffer(RxContext->CurrentIrp, IoModifyAccess, ...)| (to
- fill |RxContext->Info.Buffer|) before calling |nfs41_QueryDirectory()|.
- Reported-by: Dan Shelton <dan.f.shelton@gmail.com>
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- sys/nfs41sys_dir.c | 41 ++++++++++++++++-----------------------
- sys/nfs41sys_updowncall.c | 2 --
- 2 files changed, 17 insertions(+), 26 deletions(-)
- diff --git a/sys/nfs41sys_dir.c b/sys/nfs41sys_dir.c
- index 7e6e4a0..674720b 100644
- --- a/sys/nfs41sys_dir.c
- +++ b/sys/nfs41sys_dir.c
- @@ -103,6 +103,15 @@ NTSTATUS marshal_nfs41_dirquery(
- RtlCopyMemory(tmp, &entry->u.QueryFile.return_single, sizeof(BOOLEAN));
- tmp += sizeof(BOOLEAN);
- +#pragma warning( push )
- +/*
- + * C28145: "The opaque MDL structure should not be modified by a
- + * driver.", |MDL_MAPPING_CAN_FAIL| is the exception
- + */
- +#pragma warning (disable : 28145)
- + entry->u.QueryFile.mdl->MdlFlags |= MDL_MAPPING_CAN_FAIL;
- +#pragma warning( pop )
- +
- status = nfs41_MapLockedPagesInNfsDaemonAddressSpace(
- &entry->u.QueryFile.mdl_buf,
- entry->u.QueryFile.mdl,
- @@ -264,29 +273,18 @@ NTSTATUS nfs41_QueryDirectory(
- entry->u.QueryFile.InfoClass = InfoClass;
- entry->u.QueryFile.buf_len = RxContext->Info.LengthRemaining;
- - entry->u.QueryFile.mdl = IoAllocateMdl(RxContext->Info.Buffer,
- - RxContext->Info.LengthRemaining, FALSE, FALSE, NULL);
- + /*
- + * |RxContext->CurrentIrp->MdlAddress| is already locked by RDBSS via
- + * |RxLockUserBuffer(RxContext->CurrentIrp, IoModifyAccess, ...)| (to
- + * fill |RxContext->Info.Buffer|) before calling
- + * |nfs41_QueryDirectory()|, so we do not have to lock/unlock it
- + * ourselves
- + */
- + entry->u.QueryFile.mdl = RxContext->CurrentIrp->MdlAddress;
- if (entry->u.QueryFile.mdl == NULL) {
- status = STATUS_INTERNAL_ERROR;
- goto out;
- }
- -#pragma warning( push )
- -/*
- - * C28145: "The opaque MDL structure should not be modified by a
- - * driver.", |MDL_MAPPING_CAN_FAIL| is the exception
- - */
- -#pragma warning (disable : 28145)
- - entry->u.QueryFile.mdl->MdlFlags |= MDL_MAPPING_CAN_FAIL;
- -#pragma warning( pop )
- -
- - status = nfs41_ProbeAndLockKernelPages(entry->u.QueryFile.mdl,
- - IoModifyAccess);
- - if (status) {
- - DbgP("nfs41_QueryDirectory: "
- - "nfs41_ProbeAndLockKernelPages() failed, status=0x%lx\n",
- - (long)status);
- - goto out;
- - }
- entry->u.QueryFile.filter = Filter;
- entry->u.QueryFile.initial_query = RxContext->QueryDirectory.InitialQuery;
- @@ -325,11 +323,6 @@ NTSTATUS nfs41_QueryDirectory(
- out:
- if (entry) {
- - if (entry->u.QueryFile.mdl) {
- - (void)nfs41_UnlockKernelPages(entry->u.QueryFile.mdl);
- - IoFreeMdl(entry->u.QueryFile.mdl);
- - entry->u.QueryFile.mdl = NULL;
- - }
- nfs41_UpcallDestroy(entry);
- }
- #ifdef ENABLE_TIMINGS
- diff --git a/sys/nfs41sys_updowncall.c b/sys/nfs41sys_updowncall.c
- index 5a4c250..c1a0310 100644
- --- a/sys/nfs41sys_updowncall.c
- +++ b/sys/nfs41sys_updowncall.c
- @@ -694,8 +694,6 @@ NTSTATUS nfs41_downcall(
- (void)nfs41_UnmapLockedKernelPagesInNfsDaemonAddressSpace(
- cur->u.QueryFile.mdl_buf,
- cur->u.QueryFile.mdl);
- - (void)nfs41_UnlockKernelPages(cur->u.QueryFile.mdl);
- - IoFreeMdl(cur->u.QueryFile.mdl);
- cur->u.QueryFile.mdl_buf = NULL;
- cur->u.QueryFile.mdl = NULL;
- }
- --
- 2.51.0
- From 162fb403361bece5f68e66e840c332e278761970 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Thu, 30 Oct 2025 12:52:22 +0100
- Subject: [PATCH 2/3] sys: Add debug output in codepaths for
- invalid/unsupported parameters
- Add debug output in codepaths for invalid/unsupported parameters.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- sys/nfs41sys_acl.c | 11 ++++++++---
- sys/nfs41sys_dir.c | 4 +++-
- sys/nfs41sys_fileinfo.c | 4 ++++
- sys/nfs41sys_fsctl.c | 9 +++++++++
- sys/nfs41sys_lock.c | 4 +++-
- sys/nfs41sys_openclose.c | 1 +
- sys/nfs41sys_readwrite.c | 9 +++++++--
- 7 files changed, 35 insertions(+), 7 deletions(-)
- diff --git a/sys/nfs41sys_acl.c b/sys/nfs41sys_acl.c
- index d9647b9..3cab187 100644
- --- a/sys/nfs41sys_acl.c
- +++ b/sys/nfs41sys_acl.c
- @@ -206,15 +206,19 @@ NTSTATUS check_nfs41_getacl_args(
- SECURITY_INFORMATION info_class =
- RxContext->CurrentIrpSp->Parameters.QuerySecurity.SecurityInformation;
- - /* we don't support sacls */
- + /* we don't support sacls (yet) */
- if (info_class == SACL_SECURITY_INFORMATION ||
- info_class == LABEL_SECURITY_INFORMATION) {
- + DbgP("check_nfs41_getacl_args: SACLs not supported (yet)\n");
- status = STATUS_NOT_SUPPORTED;
- goto out;
- }
- if (RxContext->CurrentIrp->UserBuffer == NULL &&
- - RxContext->CurrentIrpSp->Parameters.QuerySecurity.Length)
- + RxContext->CurrentIrpSp->Parameters.QuerySecurity.Length) {
- + DbgP("check_nfs41_getacl_args: "
- + "RxContext->CurrentIrp->UserBuffer == NULL\n");
- status = STATUS_INVALID_USER_BUFFER;
- + }
- out:
- return status;
- }
- @@ -397,9 +401,10 @@ NTSTATUS check_nfs41_setacl_args(
- status = STATUS_MEDIA_WRITE_PROTECTED;
- goto out;
- }
- - /* we don't support sacls */
- + /* we don't support sacls (yet) */
- if (info_class == SACL_SECURITY_INFORMATION ||
- info_class == LABEL_SECURITY_INFORMATION) {
- + DbgP("check_nfs41_setacl_args: SACLs not supported (yet)\n");
- status = STATUS_NOT_SUPPORTED;
- goto out;
- }
- diff --git a/sys/nfs41sys_dir.c b/sys/nfs41sys_dir.c
- index 674720b..e80aa1e 100644
- --- a/sys/nfs41sys_dir.c
- +++ b/sys/nfs41sys_dir.c
- @@ -216,8 +216,10 @@ NTSTATUS map_querydir_errors(
- NTSTATUS check_nfs41_dirquery_args(
- IN PRX_CONTEXT RxContext)
- {
- - if (RxContext->Info.Buffer == NULL)
- + if (RxContext->Info.Buffer == NULL) {
- + DbgP("check_nfs41_dirquery_args: RxContext->Info.Buffer == NULL\n");
- return STATUS_INVALID_USER_BUFFER;
- + }
- return STATUS_SUCCESS;
- }
- diff --git a/sys/nfs41sys_fileinfo.c b/sys/nfs41sys_fileinfo.c
- index c86838c..aaa2018 100644
- --- a/sys/nfs41sys_fileinfo.c
- +++ b/sys/nfs41sys_fileinfo.c
- @@ -610,6 +610,8 @@ NTSTATUS check_nfs41_setattr_args(
- goto out;
- }
- if (rinfo->RootDirectory) {
- + DbgP("check_nfs41_setattr_args: "
- + "rinfo->RootDirectory != NULL not supported\n");
- status = STATUS_INVALID_PARAMETER;
- goto out;
- }
- @@ -629,6 +631,8 @@ NTSTATUS check_nfs41_setattr_args(
- goto out;
- }
- if (linfo->RootDirectory) {
- + DbgP("check_nfs41_setattr_args: "
- + "linfo->RootDirectory != NULL not supported\n");
- status = STATUS_INVALID_PARAMETER;
- goto out;
- }
- diff --git a/sys/nfs41sys_fsctl.c b/sys/nfs41sys_fsctl.c
- index eb5ff06..864ad78 100644
- --- a/sys/nfs41sys_fsctl.c
- +++ b/sys/nfs41sys_fsctl.c
- @@ -80,6 +80,8 @@ NTSTATUS check_nfs41_queryallocatedranges_args(
- (const PFILE_ALLOCATED_RANGE_BUFFER)FsCtl->pInputBuffer;
- if (FsCtl->pInputBuffer == NULL) {
- + DbgP("check_nfs41_queryallocatedranges_args: "
- + "FsCtl->pInputBuffer == NULL\n");
- status = STATUS_INVALID_USER_BUFFER;
- goto out;
- }
- @@ -96,11 +98,15 @@ NTSTATUS check_nfs41_queryallocatedranges_args(
- (in_range_buffer->Length.QuadPart < 0LL) ||
- (in_range_buffer->Length.QuadPart >
- (MAXLONGLONG - in_range_buffer->FileOffset.QuadPart))) {
- + DbgP("check_nfs41_queryallocatedranges_args: "
- + "in_range_buffer invalid data\n");
- status = STATUS_INVALID_PARAMETER;
- goto out;
- }
- if (FsCtl->pOutputBuffer == NULL) {
- + DbgP("check_nfs41_queryallocatedranges_args: "
- + "FsCtl->pOutputBuffer == NULL\n");
- status = STATUS_INVALID_USER_BUFFER;
- goto out;
- }
- @@ -461,6 +467,7 @@ NTSTATUS nfs41_SetZeroData(
- goto out;
- if (FsCtl->pInputBuffer == NULL) {
- + DbgP("nfs41_SetZeroData: FsCtl->pInputBuffer == NULL\n");
- status = STATUS_INVALID_USER_BUFFER;
- goto out;
- }
- @@ -656,6 +663,8 @@ NTSTATUS nfs41_DuplicateData(
- goto out;
- if (FsCtl->pInputBuffer == NULL) {
- + DbgP("nfs41_DuplicateData: "
- + "FsCtl->pInputBuffer == NULL\n");
- status = STATUS_INVALID_USER_BUFFER;
- goto out;
- }
- diff --git a/sys/nfs41sys_lock.c b/sys/nfs41sys_lock.c
- index 31ed0ec..7b52ad6 100644
- --- a/sys/nfs41sys_lock.c
- +++ b/sys/nfs41sys_lock.c
- @@ -186,8 +186,10 @@ NTSTATUS nfs41_IsLockRealizable(
- FsRtlEnterFileSystem();
- /* NFS lock operations with length=0 MUST fail with NFS4ERR_INVAL */
- - if (Length->QuadPart == 0)
- + if (Length->QuadPart == 0) {
- + DbgP("nfs41_IsLockRealizable: Length->QuadPart == 0 not supported\n");
- status = STATUS_NOT_SUPPORTED;
- + }
- FsRtlExitFileSystem();
- #ifdef DEBUG_LOCK
- diff --git a/sys/nfs41sys_openclose.c b/sys/nfs41sys_openclose.c
- index 2d9ae41..ebb7490 100644
- --- a/sys/nfs41sys_openclose.c
- +++ b/sys/nfs41sys_openclose.c
- @@ -520,6 +520,7 @@ NTSTATUS check_nfs41_create_args(
- }
- if (isStream(SrvOpen->pAlreadyPrefixedName)) {
- + DbgP("nfs41_Create: Streams not supported (yet)\n");
- status = STATUS_NOT_SUPPORTED;
- goto out;
- }
- diff --git a/sys/nfs41sys_readwrite.c b/sys/nfs41sys_readwrite.c
- index a2c023a..f82549c 100644
- --- a/sys/nfs41sys_readwrite.c
- +++ b/sys/nfs41sys_readwrite.c
- @@ -220,8 +220,11 @@ NTSTATUS map_readwrite_errors(
- static NTSTATUS check_nfs41_read_args(
- IN PRX_CONTEXT RxContext)
- {
- - if (!RxContext->LowIoContext.ParamsFor.ReadWrite.Buffer)
- + if (RxContext->LowIoContext.ParamsFor.ReadWrite.Buffer == NULL) {
- + DbgP("check_nfs41_read_args: "
- + "RxContext->LowIoContext.ParamsFor.ReadWrite.Buffer == NULL\n");
- return STATUS_INVALID_USER_BUFFER;
- + }
- return STATUS_SUCCESS;
- }
- @@ -337,7 +340,9 @@ static NTSTATUS check_nfs41_write_args(
- __notnull PNFS41_V_NET_ROOT_EXTENSION pVNetRootContext =
- NFS41GetVNetRootExtension(RxContext->pRelevantSrvOpen->pVNetRoot);
- - if (!RxContext->LowIoContext.ParamsFor.ReadWrite.Buffer) {
- + if (RxContext->LowIoContext.ParamsFor.ReadWrite.Buffer == NULL) {
- + DbgP("check_nfs41_write_args: "
- + "RxContext->LowIoContext.ParamsFor.ReadWrite.Buffer == NULL\n");
- status = STATUS_INVALID_USER_BUFFER;
- goto out;
- }
- --
- 2.51.0
- From 75859f4172ae8f5552a91818ac6f03191535b283 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Thu, 30 Oct 2025 13:06:14 +0100
- Subject: [PATCH 3/3] nfs41_build_features.h,sys: Allow pagefile.sys on NFSv4
- filesystems
- Allow pagefile.sys on NFSv4 filesystems.
- Reported-by: Dan Shelton <dan.f.shelton@gmail.com>
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- nfs41_build_features.h | 6 ++++++
- sys/nfs41sys_openclose.c | 8 ++++++--
- 2 files changed, 12 insertions(+), 2 deletions(-)
- diff --git a/nfs41_build_features.h b/nfs41_build_features.h
- index 274950b..94be0e2 100644
- --- a/nfs41_build_features.h
- +++ b/nfs41_build_features.h
- @@ -261,4 +261,10 @@
- */
- #define NFS41_DRIVER_HACK_HANDLE_NFS_DELAY_GRACE_WIP 1
- +/*
- + * |NFS41_DRIVER_HACK_ENABLE_PAGEFILE_SUPPORT| - allow pagefile.sys
- + * files on NFSv4 filesystems.
- + */
- +#define NFS41_DRIVER_HACK_ENABLE_PAGEFILE_SUPPORT 1
- +
- #endif /* !_NFS41_DRIVER_BUILDFEATURES_ */
- diff --git a/sys/nfs41sys_openclose.c b/sys/nfs41sys_openclose.c
- index ebb7490..9196aad 100644
- --- a/sys/nfs41sys_openclose.c
- +++ b/sys/nfs41sys_openclose.c
- @@ -507,10 +507,14 @@ NTSTATUS check_nfs41_create_args(
- goto out;
- }
- - if (FlagOn(Fcb->FcbState, FCB_STATE_PAGING_FILE )) {
- - print_error("FCB_STATE_PAGING_FILE not implemented\n");
- + if (FlagOn(Fcb->FcbState, FCB_STATE_PAGING_FILE)) {
- +#ifdef NFS41_DRIVER_HACK_ENABLE_PAGEFILE_SUPPORT
- + DbgP("nfs41_Create: FCB_STATE_PAGING_FILE set\n");
- +#else
- + print_error("nfs41_Create: FCB_STATE_PAGING_FILE not implemented\n");
- status = STATUS_NOT_IMPLEMENTED;
- goto out;
- +#endif /* NFS41_DRIVER_HACK_ENABLE_PAGEFILE_SUPPORT */
- }
- if (!pNetRootContext->mounts_init) {
- --
- 2.51.0
- From 22ca35c76a040b391b74b5d5d0cc2b2fca086977 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Fri, 31 Oct 2025 14:38:54 +0100
- Subject: [PATCH 1/2] tests: Add "Smb2" fields for winfsinfo
- fileremoteprotocolinfo
- Add "Smb2" fields for winfsinfo fileremoteprotocolinfo.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- tests/winfsinfo1/winfsinfo.c | 36 ++++++++++++++++++++++++++++++++++--
- 1 file changed, 34 insertions(+), 2 deletions(-)
- diff --git a/tests/winfsinfo1/winfsinfo.c b/tests/winfsinfo1/winfsinfo.c
- index ca658dd..a7a9d17 100644
- --- a/tests/winfsinfo1/winfsinfo.c
- +++ b/tests/winfsinfo1/winfsinfo.c
- @@ -1162,7 +1162,7 @@ int get_file_remote_protocol_info(const char *progname, const char *filename)
- #if (_WIN32_WINNT < _WIN32_WINNT_WIN8)
- /* ProtocolSpecificReserved */
- (void)printf("\tcompound ProtocolSpecificReserved=(\n");
- - (void)printf("\t\ttypeset -a Reserved=(\n");
- + (void)printf("\t\ttypeset -l -i -a Reserved=(\n");
- for (i=0 ; i < 16 ; i++) {
- (void)printf("\t\t\t[%d]=0x%lx\n",
- i,
- @@ -1173,7 +1173,39 @@ int get_file_remote_protocol_info(const char *progname, const char *filename)
- #else
- /* ProtocolSpecific */
- (void)printf("\tcompound ProtocolSpecific=(\n");
- - (void)printf("\t\ttypeset -a Reserved=(\n");
- +
- + if (frpi.Protocol == WNNC_NET_SMB) {
- + (void)printf("\t\tcompound Smb2=(\n");
- + (void)printf("\t\t\tcompound Server=(\n");
- + (void)printf("\t\t\t\tCapabilities=0x%lx\n",
- + (unsigned long)frpi.ProtocolSpecific.Smb2.Server.Capabilities);
- + (void)printf("\t\t\t)\n");
- + (void)printf("\t\t\tcompound Share=(\n");
- + (void)printf("\t\t\t\tCapabilities=0x%lx\n",
- + (unsigned long)frpi.ProtocolSpecific.Smb2.Share.Capabilities);
- + (void)printf("\t\t\t\tShareFlags=0x%lx\n",
- + (unsigned long)frpi.ProtocolSpecific.Smb2.Share.ShareFlags);
- +#if 0 /* MinGW header do not have these fields yet */
- + (void)printf("\t\t\t\tCachingFlags=0x%lx\n",
- + (unsigned long)frpi.ProtocolSpecific.Smb2.Share.CachingFlags);
- + (void)printf("\t\t\t\tShareType=%d\n",
- + (int)frpi.ProtocolSpecific.Smb2.Share.ShareType);
- +
- + (void)printf("\t\t\t\ttypeset -l -i -a Reserved0=(\n");
- + for (i=0 ; i < 4 ; i++) {
- + (void)printf("\t\t\t\t\t[%d]=0x%lx\n",
- + i,
- + (long)frpi.ProtocolSpecific.Smb2.Share.Reserved0[i]);
- + }
- + (void)printf("\t\t\t\t)\n");
- + (void)printf("\t\t\t\tReserved1=0x%lx\n",
- + (unsigned long)frpi.ProtocolSpecific.Smb2.Share.Reserved1);
- +#endif
- + (void)printf("\t\t\t)\n");
- + (void)printf("\t\t)\n");
- + }
- +
- + (void)printf("\t\ttypeset -l -i -a Reserved=(\n");
- for (i=0 ; i < 16 ; i++) {
- (void)printf("\t\t\t[%d]=0x%lx\n",
- i,
- --
- 2.51.0
- From dac3ed27aeba651c21a9da0702ff19b0aa7127ab Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Fri, 31 Oct 2025 14:40:30 +0100
- Subject: [PATCH 2/2] tests: Fix 64bit kernel alignment issue when trying to
- query FileRemoteProtocolinfo for SMB filesystem
- Fix 64bit kernel alignment issue when trying to query
- FileRemoteProtocolinfo for SMB filesystem.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- tests/winfsinfo1/winfsinfo.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
- diff --git a/tests/winfsinfo1/winfsinfo.c b/tests/winfsinfo1/winfsinfo.c
- index a7a9d17..a7dad62 100644
- --- a/tests/winfsinfo1/winfsinfo.c
- +++ b/tests/winfsinfo1/winfsinfo.c
- @@ -1076,7 +1076,11 @@ int get_file_remote_protocol_info(const char *progname, const char *filename)
- {
- int res = EXIT_FAILURE;
- bool ok;
- - FILE_REMOTE_PROTOCOL_INFO frpi;
- +#ifdef _MSC_BUILD
- + __declspec(align(16)) FILE_REMOTE_PROTOCOL_INFO frpi;
- +#else
- + FILE_REMOTE_PROTOCOL_INFO frpi __attribute__((aligned(16)));
- +#endif
- int i;
- (void)memset(&frpi, 0, sizeof(frpi));
- --
- 2.51.0
- From 483a7649d3ad4ce3872f68ba21af14200704b84d Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 3 Nov 2025 20:59:50 +0100
- Subject: [PATCH 1/3] tests: Document filedisk-sparse fork of bobranten's
- filedisk-22
- Document filedisk-sparse fork of bobranten's filedisk-22.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- tests/manual_testing.txt | 27 ++++++++++++++++++---------
- 1 file changed, 18 insertions(+), 9 deletions(-)
- diff --git a/tests/manual_testing.txt b/tests/manual_testing.txt
- index 4a2d42d..57c9013 100644
- --- a/tests/manual_testing.txt
- +++ b/tests/manual_testing.txt
- @@ -1,5 +1,5 @@
- #
- -# ms-nfs41-client manual testing sequence, 2025-11-01
- +# ms-nfs41-client manual testing sequence, 2025-11-03
- #
- # Draft version, needs to be turned into automated tests
- # if possible
- @@ -1146,16 +1146,25 @@ mkdir testruns && cd testruns
- # FileDisk
- # (use plain files as disks, disk/CDROM images)
- #
- +# Original version is 'https://www.accum.se/~bosse/filedisk/filedisk-22.zip',
- +# we use our fork which supports punching sparse file holes and minor other
- +# tweaks
- +#
- +
- +#
- +# build
- +#
- +export PATH="/cygdrive/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/:$PATH"
- +git clone https://github.com/gisburn/filedisk-sparse.git
- +cd filedisk-sparse/
- +MSBuild.exe filedisk.sln -t:Build -p:Configuration=Debug -p:Platform=x64
- #
- # install
- #
- -wget 'https://www.accum.se/~bosse/filedisk/filedisk-22.zip'
- -unzip filedisk-22.zip
- -cd filedisk-22
- -cp ./sys/Release/x64/filedisk.sys /cygdrive/c/Windows/System32/drivers/.
- -cp ./sys/Release/x64/filedisk.pdb /cygdrive/c/Windows/System32/drivers/.
- -cp ./exe/Release/x64/filedisk.exe /cygdrive/c/Windows/.
- +cp ./sys/Debug/x64/filedisk.sys /cygdrive/c/Windows/System32/drivers/.
- +cp ./sys/Debug/x64/filedisk.pdb /cygdrive/c/Windows/System32/drivers/.
- +cp ./exe/Debug/x64/filedisk.exe /cygdrive/c/Windows/.
- chmod a+rx /cygdrive/c/Windows/filedisk.exe
- sc create filedisk binPath='C:\Windows\System32\drivers\filedisk.sys' type=kernel
- @@ -1173,8 +1182,8 @@ filedisk /umount V:
- # Create NTFS filesystem and use it
- #
- rm -f /cygdrive/n/winntfs_filedisk_001.img
- -filedisk /mount 2 'N:\winntfs_filedisk_001.img' 8192G U:
- -format.com U: /FS:NTFS "/V:NTFSonNFS4_001" /Q /X
- +filedisk /mount 2 'N:\winntfs_filedisk_001.img' 1T U:
- +format.com U: /FS:NTFS /A:8192 "/V:NTFSonNFS4_001" /Q /X
- mkdir /cygdrive/u/test1 && cd /cygdrive/u/test1
- rm -Rfv bash && time nice ksh93 /home/roland_mainz/work/msnfs41_uidmapping/ms-nfs41-client/tests/nfsbuildtest/nfsbuildtest.ksh93 bash build
- cd
- --
- 2.51.0
- From 47892e6cae791e87b486ed777f2d01bac9458886 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 3 Nov 2025 21:26:00 +0100
- Subject: [PATCH 2/3] README.md,docs: Document filedisk-sparse as alternative
- to VHD/VHDX disks
- Document filedisk-sparse as alternative to VHD/VHDX disks.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- README.md | 10 ++++++++++
- docs/README.xml | 9 +++++++++
- 2 files changed, 19 insertions(+)
- diff --git a/README.md b/README.md
- index 8d34637..fd1ff44 100644
- --- a/README.md
- +++ b/README.md
- @@ -776,6 +776,16 @@ Within WSL mount UNC path returned by `/sbin/nfs_mount`
- Dieser Fehler wurde von dem Server zurueckgegeben, auf dem sich die
- Datei befindet. Versuchen Sie, die Datei woanders zu speichern.
- +- [VHD/VHDX
- + disks](https://learn.microsoft.com/en-us/windows-server/storage/disk-management/manage-virtual-hard-disks)
- + currently (Win10, Win11) cannot use files on ms-nfs41-client/NFSv4
- + filesystems as storage. It seems the Windows code makes explicit
- + checks for SMB filesystems, and rejects any non-SMB filesystems.
- +
- + As an alternative `filedisk-sparse`
- + (<https://github.com/gisburn/filedisk-sparse/>) can be used to mount
- + (sparse) files as disks or CDROM images.
- +
- # Troubleshooting && finding bugs/debugging
- - `nfsd_debug.exe` has the `-d` option to set a level for debug output.
- diff --git a/docs/README.xml b/docs/README.xml
- index a1dbd2c..56460d8 100644
- --- a/docs/README.xml
- +++ b/docs/README.xml
- @@ -875,6 +875,15 @@ konnten gespeichert werden. Daten gingen verloren.
- Dieser Fehler wurde von dem Server zurueckgegeben, auf dem sich die
- Datei befindet. Versuchen Sie, die Datei woanders zu speichern.</programlisting>
- </listitem>
- + <listitem>
- + <para><link xl:href="https://learn.microsoft.com/en-us/windows-server/storage/disk-management/manage-virtual-hard-disks">VHD/VHDX disks</link>
- + currently (Win10, Win11) cannot use files on ms-nfs41-client/NFSv4 filesystems as storage.
- + It seems the Windows code makes explicit checks for SMB filesystems,
- + and rejects any non-SMB filesystems.</para>
- + <para>As an alternative <literal>filedisk-sparse</literal>
- + (<link xl:href="https://github.com/gisburn/filedisk-sparse/">https://github.com/gisburn/filedisk-sparse/</link>)
- + can be used to mount (sparse) files as disks or CDROM images.</para>
- + </listitem>
- </itemizedlist>
- </section>
- --
- 2.51.0
- From 31409aa71b356ea42d1eee7cb106bc96ad80e47a Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 3 Nov 2025 21:37:51 +0100
- Subject: [PATCH 3/3] README.md,docs: Add note about per-machine software
- installations on filedisk-sparse
- Add note about per-machine software installations on
- NTFS<-->filedisk-sparse<-->NFSv4-Client<-->NFS-Server.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- README.md | 6 ++++++
- docs/README.xml | 3 +++
- 2 files changed, 9 insertions(+)
- diff --git a/README.md b/README.md
- index fd1ff44..2364154 100644
- --- a/README.md
- +++ b/README.md
- @@ -786,6 +786,12 @@ Within WSL mount UNC path returned by `/sbin/nfs_mount`
- (<https://github.com/gisburn/filedisk-sparse/>) can be used to mount
- (sparse) files as disks or CDROM images.
- + This can also be used to host per-machine software installations/data
- + storage (e.g. use
- + `filedisk /mount 35 'N:\winntfs_filedisk_003.img' S:` as global mount
- + which require NTFS or ReFS, but should be physically hosted on the NFS
- + server.
- +
- # Troubleshooting && finding bugs/debugging
- - `nfsd_debug.exe` has the `-d` option to set a level for debug output.
- diff --git a/docs/README.xml b/docs/README.xml
- index 56460d8..d605c85 100644
- --- a/docs/README.xml
- +++ b/docs/README.xml
- @@ -883,6 +883,9 @@ Datei befindet. Versuchen Sie, die Datei woanders zu speichern.</programlisting>
- <para>As an alternative <literal>filedisk-sparse</literal>
- (<link xl:href="https://github.com/gisburn/filedisk-sparse/">https://github.com/gisburn/filedisk-sparse/</link>)
- can be used to mount (sparse) files as disks or CDROM images.</para>
- + <para>This can also be used to host per-machine software installations/data storage (e.g. use
- + <command>filedisk /mount 35 'N:\winntfs_filedisk_003.img' S:</command> as global mount
- + which require NTFS or ReFS, but should be physically hosted on the NFS server.</para>
- </listitem>
- </itemizedlist>
- </section>
- --
- 2.51.0
msnfs41client: Misc patches, 2025-11-03
Posted by Anonymous on Mon 3rd Nov 2025 20:46
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.
rovema.kpaste.net RSS