- # ---- snip ----
 - # $ powershell -Command 'Mount-DiskImage -ImagePath "\\10.49.202.230@2049\nfs4\xfstestfs001\test2\vhdtest\v2.img"'
 - # Mount-DiskImage : Der angeforderte Vorgang konnte aufgrund einer Dateisystemeinschränkung nicht abgeschlossen werden.
 - # In Zeile:1 Zeichen:1
 - # + Mount-DiskImage -ImagePath L:\download\debian-12.4.0-amd64-DVD-1.iso
 - # + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 - # + CategoryInfo : NotSpecified: (MSFT_DiskImage:ROOT/Microsoft/.../MSFT_DiskImage) [Mount-DiskImage], CimException
 - # + FullyQualifiedErrorId : HRESULT 0x80070299,Mount-DiskImage
 - # ---- snip ----
 - diff --git a/daemon/fileinfoutil.c b/daemon/fileinfoutil.c
 - index 2556c87..925f537 100644
 - --- a/daemon/fileinfoutil.c
 - +++ b/daemon/fileinfoutil.c
 - @@ -221,7 +221,7 @@ void nfs_to_remote_protocol_info(
 - rpi_out->StructureVersion = 4;
 - rpi_out->StructureSize = sizeof(FILE_REMOTE_PROTOCOL_INFORMATION);
 - - rpi_out->Protocol = WNNC_NET_RDR2SAMPLE; /* FIXME! */
 - + rpi_out->Protocol = WNNC_NET_SMB; // WNNC_NET_RDR2SAMPLE; /* FIXME! */
 - /* ToDo: Add pNFS info */
 - rpi_out->ProtocolMajorVersion = 4;
 - diff --git a/daemon/nfs41_superblock.c b/daemon/nfs41_superblock.c
 - index eb8a938..92cfeac 100644
 - --- a/daemon/nfs41_superblock.c
 - +++ b/daemon/nfs41_superblock.c
 - @@ -194,6 +194,7 @@ void nfs41_superblock_fs_attributes(
 - FsAttrs->FileSystemAttributes |= FILE_SUPPORTS_SPARSE_FILES;
 - /* NFSv4 protocol uses Unicode by default */
 - FsAttrs->FileSystemAttributes |= FILE_UNICODE_ON_DISK;
 - + FsAttrs->FileSystemAttributes |= FILE_SUPPORTS_OBJECT_IDS;
 - /* We support |FileCaseSensitiveInformation| to query each dir */
 - FsAttrs->FileSystemAttributes |= FILE_SUPPORTS_CASE_SENSITIVE_DIRS;
 - @@ -218,8 +219,8 @@ void nfs41_superblock_fs_attributes(
 - /* let the driver fill in FileSystemName */
 - #if ((NFS41_DRIVER_DEBUG_FS_NAME) == 1)
 - - (void)wcscpy(FsAttrs->FileSystemName, L"NFS");
 - - FsAttrs->FileSystemNameLength = 3*sizeof(wchar_t);
 - + (void)wcscpy(FsAttrs->FileSystemName, L"NTFS");
 - + FsAttrs->FileSystemNameLength = 4*sizeof(wchar_t);
 - #elif ((NFS41_DRIVER_DEBUG_FS_NAME) == 2)
 - (void)wcscpy(FsAttrs->FileSystemName, L"DEBUG-NFS41");
 - FsAttrs->FileSystemNameLength = 11*sizeof(wchar_t);
 - diff --git a/daemon/volume.c b/daemon/volume.c
 - index dbb2431..e836d74 100644
 - --- a/daemon/volume.c
 - +++ b/daemon/volume.c
 - @@ -36,7 +36,7 @@
 - /* windows volume queries want size in 'units', so we have to
 - * convert the nfs space_* attributes from bytes to units */
 - #define SECTORS_PER_UNIT 8
 - -#define BYTES_PER_SECTOR 1024
 - +#define BYTES_PER_SECTOR 512
 - #define BYTES_PER_UNIT (SECTORS_PER_UNIT * BYTES_PER_SECTOR)
 - #define TO_UNITS(bytes) (bytes / BYTES_PER_UNIT)
 - diff --git a/sys/nfs41sys_fsctl.c b/sys/nfs41sys_fsctl.c
 - index c1a3f2b..972792c 100644
 - --- a/sys/nfs41sys_fsctl.c
 - +++ b/sys/nfs41sys_fsctl.c
 - @@ -895,6 +895,24 @@ NTSTATUS nfs41_FsCtl(
 - case FSCTL_DUPLICATE_EXTENTS_TO_FILE:
 - status = nfs41_DuplicateData(RxContext);
 - break;
 - + case FSCTL_CREATE_OR_GET_OBJECT_ID:
 - + case FSCTL_GET_OBJECT_ID:
 - + __notnull XXCTL_LOWIO_COMPONENT *FsCtl =
 - + &RxContext->LowIoContext.ParamsFor.FsCtl;
 - + __notnull PNFS41_FCB nfs41_fcb = NFS41GetFcbExtension(RxContext->pFcb);
 - + __notnull PFILE_OBJECTID_BUFFER objidbuf =
 - + (PFILE_OBJECTID_BUFFER)FsCtl->pOutputBuffer;
 - + if (objidbuf) {
 - + ULONGLONG xor_fsid = nfs41_fcb->fsid_major ^ nfs41_fcb->fsid_minor;
 - + (void)memset(objidbuf, 0, sizeof(FILE_OBJECTID_BUFFER));
 - + (void)memcpy(&objidbuf->ObjectId[0], &nfs41_fcb->fileid, sizeof(ULONGLONG));
 - + (void)memcpy(&objidbuf->ObjectId[8], &xor_fsid, sizeof(ULONGLONG));
 - + status = STATUS_SUCCESS;
 - + }
 - + else {
 - + status = STATUS_INVALID_USER_BUFFER;
 - + }
 - + break;
 - default:
 - break;
 - }
 - diff --git a/sys/nfs41sys_volinfo.c b/sys/nfs41sys_volinfo.c
 - index e663d0b..9919556 100644
 - --- a/sys/nfs41sys_volinfo.c
 - +++ b/sys/nfs41sys_volinfo.c
 - @@ -182,6 +182,26 @@ NTSTATUS nfs41_QueryVolumeInformation(
 - status = STATUS_SUCCESS;
 - goto out;
 - }
 - + case FileFsObjectIdInformation:
 - + {
 - + PFILE_FS_OBJECTID_INFORMATION pObjIdInfo = RxContext->Info.Buffer;
 - +
 - + SizeUsed = sizeof(FILE_FS_OBJECTID_INFORMATION);
 - + if (RemainingLength < SizeUsed) {
 - + status = STATUS_BUFFER_TOO_SMALL;
 - + RxContext->InformationToReturn = SizeUsed;
 - + goto out;
 - + }
 - +
 - + (void)memset(pObjIdInfo, 0, sizeof(FILE_FS_OBJECTID_INFORMATION));
 - + const ULONGLONG nfs41GUID = 0xDEADBEEF;
 - + (void)memcpy(&pObjIdInfo->ObjectId[0], &nfs41GUID, sizeof(ULONGLONG));
 - +
 - + RxContext->Info.LengthRemaining -= SizeUsed;
 - + status = STATUS_SUCCESS;
 - + goto out;
 - + }
 - +
 - case FileFsAttributeInformation:
 - case FileFsSizeInformation:
 
Mount-DiskImage experiments
Posted by Anonymous on Sat 16th Aug 2025 13:43
raw | new post
modification of post by Anonymous (view diff)
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.
 nrubsig.kpaste.net RSS