- # testcase: powershell -Command 'Get-Content -Path "S:\roland_mainz_dir\eatest\x" -Stream "DATAX"'
- diff --git a/daemon/lookup.c b/daemon/lookup.c
- index 3257eee..f3dfa81 100644
- --- a/daemon/lookup.c
- +++ b/daemon/lookup.c
- @@ -493,6 +493,17 @@ int nfs41_lookup(
- abs_path_copy(&path, path_inout);
- ReleaseSRWLockShared(&path_inout->lock);
- +
- + char *streammarker = memchr(path.path, ':', path.len);
- + if (streammarker) {
- + DPRINTF(0, ("nfs41_lookup: found stream '%s', len=%d stream='%s'\n",
- + path.path, path.len, streammarker+1));
- + *streammarker = '\0';
- + path.len = (unsigned short)(streammarker - path.path);
- + DPRINTF(0, ("nfs41_lookup: new base filename '%s', len=%d\n",
- + path.path, path.len));
- + }
- +
- path_pos = path.path;
- path_end = path.path + path.len;
- @@ -548,6 +559,19 @@ int nfs41_lookup(
- casesensitive, path_inout,
- parent_out, target_out, info_out, session_out);
- }
- +
- + if ((status == 0) && streammarker) {
- + nfs41_fh namedattrdir_fh = { 0 };
- + enum nfsstat4 nfsstatus;
- +
- + nfsstatus = nfs41_rpc_openattr(*session_out, target_out, FALSE, &namedattrdir_fh);
- +
- + /*
- + * TODO:
- + * - Issue OP_LOOKUP relative to |namedattrdir_fh|, do a getattr, done
- + * - target_out should be a local variable, and the real target_out should contain the attr data
- + */
- + }
- out:
- DPRINTF(LULVL, ("<-- nfs41_lookup() returning %d\n", status));
- return status;
- diff --git a/daemon/nfs41_superblock.c b/daemon/nfs41_superblock.c
- index 8777feb..1c7d1c9 100644
- --- a/daemon/nfs41_superblock.c
- +++ b/daemon/nfs41_superblock.c
- @@ -291,8 +291,12 @@ void nfs41_superblock_fs_attributes(
- FsAttrs->FileSystemAttributes |= FILE_SUPPORTS_HARD_LINKS;
- if (superblock->symlink_support)
- FsAttrs->FileSystemAttributes |= FILE_SUPPORTS_REPARSE_POINTS;
- - if (superblock->ea_support)
- - FsAttrs->FileSystemAttributes |= FILE_SUPPORTS_EXTENDED_ATTRIBUTES;
- + if (superblock->ea_support) {
- + FsAttrs->FileSystemAttributes |= FILE_SUPPORTS_EXTENDED_ATTRIBUTES;
- +#if 1
- + FsAttrs->FileSystemAttributes |= FILE_NAMED_STREAMS;
- +#endif
- + }
- if (superblock->case_preserving)
- FsAttrs->FileSystemAttributes |= FILE_CASE_PRESERVED_NAMES;
- if (!superblock->case_insensitive)
- diff --git a/sys/nfs41sys_openclose.c b/sys/nfs41sys_openclose.c
- index ca3b76f..4d52762 100644
- --- a/sys/nfs41sys_openclose.c
- +++ b/sys/nfs41sys_openclose.c
- @@ -510,10 +510,12 @@ NTSTATUS check_nfs41_create_args(
- goto out;
- }
- +#if 0 /* FIXME: Should depend on fsattr |FILE_NAMED_STREAMS| */
- if (isStream(SrvOpen->pAlreadyPrefixedName)) {
- status = STATUS_NOT_SUPPORTED;
- goto out;
- }
- +#endif
- if (pVNetRootContext->read_only &&
- (params->DesiredAccess & (FILE_WRITE_DATA | FILE_APPEND_DATA))) {
msnfs41client streams support
Posted by Anonymous on Thu 25th Sep 2025 17:32
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.