- From 884621976c80c636b94c535963be9c344b032b42 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Thu, 24 Jul 2025 20:04:57 +0200
- Subject: [PATCH 1/2] daemon,include: Userland daemon should use the same
- datatypes as kernel for communication
- Userland daemon should use exactly the same datatypes as the kernel for
- communication (marshalling/unmarshalling).
- Reported-by: Dan Shelton <dan.f.shelton@gmail.com>
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- daemon/fileinfoutil.c | 4 ++--
- daemon/fileinfoutil.h | 4 ++--
- daemon/setattr.c | 4 ++--
- daemon/upcall.h | 10 ++++-----
- include/from_kernel.h | 48 +++++++++++++++++++++++++++++++++++++++++++
- 5 files changed, 59 insertions(+), 11 deletions(-)
- diff --git a/daemon/fileinfoutil.c b/daemon/fileinfoutil.c
- index 540994c..8af628e 100644
- --- a/daemon/fileinfoutil.c
- +++ b/daemon/fileinfoutil.c
- @@ -97,7 +97,7 @@ void nfs_to_basic_info(
- IN const char *restrict name,
- IN const nfs41_superblock *restrict superblock,
- IN const nfs41_file_info *restrict info,
- - OUT PFILE_BASIC_INFO basic_out)
- + OUT PFILE_BASIC_INFORMATION basic_out)
- {
- EASSERT(info->attrmask.count > 0);
- @@ -145,7 +145,7 @@ void nfs_to_basic_info(
- void nfs_to_standard_info(
- IN const nfs41_superblock *restrict superblock,
- IN const nfs41_file_info *restrict info,
- - OUT PFILE_STANDARD_INFO restrict std_out)
- + OUT PFILE_STANDARD_INFORMATION restrict std_out)
- {
- const ULONG FileAttributes =
- nfs_file_info_to_attributes(superblock, info);
- diff --git a/daemon/fileinfoutil.h b/daemon/fileinfoutil.h
- index 63b8117..2fce2d6 100644
- --- a/daemon/fileinfoutil.h
- +++ b/daemon/fileinfoutil.h
- @@ -42,11 +42,11 @@ void nfs_to_basic_info(
- IN const char *restrict name,
- IN const nfs41_superblock *restrict superblock,
- IN const nfs41_file_info *restrict info,
- - OUT PFILE_BASIC_INFO restrict basic_out);
- + OUT PFILE_BASIC_INFORMATION restrict basic_out);
- void nfs_to_standard_info(
- IN const nfs41_superblock *restrict superblock,
- IN const nfs41_file_info *restrict info,
- - OUT PFILE_STANDARD_INFO restrict std_out);
- + OUT PFILE_STANDARD_INFORMATION restrict std_out);
- void nfs_to_network_openinfo(
- IN const char *restrict name,
- IN const nfs41_superblock *restrict superblock,
- diff --git a/daemon/setattr.c b/daemon/setattr.c
- index ab124c8..8ffdd90 100644
- --- a/daemon/setattr.c
- +++ b/daemon/setattr.c
- @@ -66,7 +66,7 @@ out:
- static int handle_nfs41_setattr_basicinfo(void *daemon_context, setattr_upcall_args *args)
- {
- - PFILE_BASIC_INFO basic_info = (PFILE_BASIC_INFO)args->buf;
- + PFILE_BASIC_INFORMATION basic_info = (PFILE_BASIC_INFORMATION)args->buf;
- nfs41_open_state *state = args->state;
- nfs41_superblock *superblock = state->file.fh.superblock;
- stateid_arg stateid;
- @@ -301,7 +301,7 @@ static int handle_nfs41_rename(void *daemon_context, setattr_upcall_args *args)
- {
- nfs41_open_state *state = args->state;
- nfs41_session *dst_session;
- - PFILE_RENAME_INFO rename = (PFILE_RENAME_INFO)args->buf;
- + PFILE_RENAME_INFORMATION rename = (PFILE_RENAME_INFORMATION)args->buf;
- nfs41_abs_path dst_path = { 0 };
- nfs41_path_fh dst_dir, dst;
- nfs41_component dst_name, *src_name;
- diff --git a/daemon/upcall.h b/daemon/upcall.h
- index 10a1aa5..bbbecf7 100644
- --- a/daemon/upcall.h
- +++ b/daemon/upcall.h
- @@ -46,8 +46,8 @@ typedef struct __mount_upcall_args {
- typedef struct __open_upcall_args {
- nfs41_abs_path symlink;
- - FILE_BASIC_INFO basic_info;
- - FILE_STANDARD_INFO std_info;
- + FILE_BASIC_INFORMATION basic_info;
- + FILE_STANDARD_INFORMATION std_info;
- ULONGLONG fileid;
- ULONGLONG fsid_major, fsid_minor;
- const char *path;
- @@ -101,9 +101,9 @@ typedef struct __unlock_upcall_args {
- } unlock_upcall_args;
- typedef struct __getattr_upcall_args {
- - FILE_BASIC_INFO basic_info;
- - FILE_STANDARD_INFO std_info;
- - FILE_ATTRIBUTE_TAG_INFO tag_info;
- + FILE_BASIC_INFORMATION basic_info;
- + FILE_STANDARD_INFORMATION std_info;
- + FILE_ATTRIBUTE_TAG_INFORMATION tag_info;
- FILE_INTERNAL_INFORMATION intr_info;
- FILE_NETWORK_OPEN_INFORMATION network_info;
- FILE_REMOTE_PROTOCOL_INFORMATION remote_protocol_info;
- diff --git a/include/from_kernel.h b/include/from_kernel.h
- index 7a305bc..4ced877 100644
- --- a/include/from_kernel.h
- +++ b/include/from_kernel.h
- @@ -144,6 +144,54 @@ typedef enum _FILE_INFORMATION_CLASS {
- FileMaximumInformation
- } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
- +/* FileBasicInformation==4 */
- +typedef struct _FILE_BASIC_INFORMATION {
- + LARGE_INTEGER CreationTime;
- + LARGE_INTEGER LastAccessTime;
- + LARGE_INTEGER LastWriteTime;
- + LARGE_INTEGER ChangeTime;
- + ULONG FileAttributes;
- +} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
- +
- +/* FileStandardInformation==5 */
- +typedef struct _FILE_STANDARD_INFORMATION {
- + LARGE_INTEGER AllocationSize;
- + LARGE_INTEGER EndOfFile;
- + ULONG NumberOfLinks;
- + BOOLEAN DeletePending;
- + BOOLEAN Directory;
- +} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
- +
- +typedef struct _FILE_STANDARD_INFORMATION_EX {
- + LARGE_INTEGER AllocationSize;
- + LARGE_INTEGER EndOfFile;
- + ULONG NumberOfLinks;
- + BOOLEAN DeletePending;
- + BOOLEAN Directory;
- + BOOLEAN AlternateStream;
- + BOOLEAN MetadataAttribute;
- +} FILE_STANDARD_INFORMATION_EX, *PFILE_STANDARD_INFORMATION_EX;
- +
- +/* FileRenameInformation==10 */
- +typedef struct _FILE_RENAME_INFORMATION {
- +#pragma warning( push )
- +/* Disable warning C4201 ("nonstandard extension used: nameless struct/union") */
- +#pragma warning (disable : 4201)
- + union {
- + BOOLEAN ReplaceIfExists; /* class==FileRenameInformation */
- + ULONG Flags; /* class==FileRenameInformationEx */
- + };
- +#pragma warning( pop )
- + HANDLE RootDirectory;
- + ULONG FileNameLength;
- + WCHAR FileName[1];
- +} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
- +
- +/* FileAttributeTagInformation==35 */
- +typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION {
- + ULONG FileAttributes;
- + ULONG ReparseTag;
- +} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
- /* kernel structures for QueryDirectory results */
- typedef struct _FILE_NAMES_INFORMATION {
- --
- 2.45.1
- From 543c7e5831dc475eeb90fc19baf29a1accc2a26d Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Thu, 24 Jul 2025 20:22:10 +0200
- Subject: [PATCH 2/2] tests: Minor update on MariaDB setup&test instructions
- Minor update on MariaDB setup&test instructions
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- tests/manual_testing.txt | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
- diff --git a/tests/manual_testing.txt b/tests/manual_testing.txt
- index a4a3364..c57160b 100644
- --- a/tests/manual_testing.txt
- +++ b/tests/manual_testing.txt
- @@ -1,5 +1,5 @@
- #
- -# ms-nfs41-client manual testing sequence, 2025-06-14
- +# ms-nfs41-client manual testing sequence, 2025-07-23
- #
- # Draft version, needs to be turned into automated tests
- # if possible
- @@ -850,6 +850,7 @@ CREATE DATABASE alphabet_test4;
- USE alphabet_test4;
- # create table using InnoDB with PAGE_COMPRESSED=1 (which will use punch hole to free space)
- +# see https://dev.mysql.com/doc/refman/8.4/en/innodb-page-compression.html
- CREATE TABLE file_data (
- line_number INT PRIMARY KEY,
- line_text TEXT
- @@ -881,5 +882,11 @@ time ksh93 -c 'for ((i=0 ; i < 10 ; i++ )) ; do cat /usr/share/doc/mingw64-x86_6
- 3. Check whether the database file now has holes:
- $ lssparse -H /cygdrive/n/mariadbtest/alphabet_test4/file_data.ibd
- +#### Notes:
- +- MariaDB runs in a Windows "NT Service" account ("NT SERVICE\MariaDB"), which neither Cygwin
- + $ /usrbin/getent passwd # nor $ net localusers # will list
- +- Thanks to MariaDB's Kristian Nielsen <knielsen@knielsen-hq.org> for helping with this
- +
- +
- #
- # EOF.
- --
- 2.45.1
msnfs41client: Patches for using same datatypes in kernel+userrland, MariaDB setup&test update, 2025-07-24
Posted by Anonymous on Thu 24th Jul 2025 19:28
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.