diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-11-17 06:30:06 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:05:55 -0500 |
commit | 5a34ef4df6152f5e970afbfb463d4665a823deb7 (patch) | |
tree | 53859e6014bf10a4cc958f99cbaac4e552fb0dab /source4/ntvfs/posix | |
parent | ae7caf08c1f47f3ad08856cfea2a3e6e956b48ab (diff) | |
download | samba-5a34ef4df6152f5e970afbfb463d4665a823deb7.tar.gz samba-5a34ef4df6152f5e970afbfb463d4665a823deb7.tar.bz2 samba-5a34ef4df6152f5e970afbfb463d4665a823deb7.zip |
r3799: - added the bit for FS_ATTR_NAMED_STREAMS support into qfsinfo filesystem attribute reply
- pvfs passes the RAW-STREAMS test
(This used to be commit c1a48a7542a52df734b54031f405d574e4c891e3)
Diffstat (limited to 'source4/ntvfs/posix')
-rw-r--r-- | source4/ntvfs/posix/pvfs_fsinfo.c | 4 | ||||
-rw-r--r-- | source4/ntvfs/posix/pvfs_resolve.c | 4 | ||||
-rw-r--r-- | source4/ntvfs/posix/vfs_posix.c | 10 | ||||
-rw-r--r-- | source4/ntvfs/posix/vfs_posix.h | 3 |
4 files changed, 19 insertions, 2 deletions
diff --git a/source4/ntvfs/posix/pvfs_fsinfo.c b/source4/ntvfs/posix/pvfs_fsinfo.c index 7b2226579a..6d92713ac7 100644 --- a/source4/ntvfs/posix/pvfs_fsinfo.c +++ b/source4/ntvfs/posix/pvfs_fsinfo.c @@ -115,9 +115,9 @@ NTSTATUS pvfs_fsinfo(struct ntvfs_module_context *ntvfs, case RAW_QFS_ATTRIBUTE_INFO: case RAW_QFS_ATTRIBUTE_INFORMATION: - fs->attribute_info.out.fs_attr = 0; + fs->attribute_info.out.fs_attr = pvfs->fs_attribs; fs->attribute_info.out.max_file_component_length = 255; - fs->attribute_info.out.fs_type.s = req->tcon->fs_type; + fs->attribute_info.out.fs_type.s = req->tcon->fs_type; return NT_STATUS_OK; case RAW_QFS_QUOTA_INFORMATION: diff --git a/source4/ntvfs/posix/pvfs_resolve.c b/source4/ntvfs/posix/pvfs_resolve.c index 302ccdae60..7329968d6c 100644 --- a/source4/ntvfs/posix/pvfs_resolve.c +++ b/source4/ntvfs/posix/pvfs_resolve.c @@ -458,6 +458,10 @@ NTSTATUS pvfs_resolve_name(struct pvfs_state *pvfs, TALLOC_CTX *mem_ctx, (*name)->exists = False; (*name)->stream_exists = False; + if (!(pvfs->fs_attribs & FS_ATTR_NAMED_STREAMS)) { + flags &= ~PVFS_RESOLVE_STREAMS; + } + /* do the basic conversion to a unix formatted path, also checking for allowable characters */ status = pvfs_unix_path(pvfs, cifs_name, flags, *name); diff --git a/source4/ntvfs/posix/vfs_posix.c b/source4/ntvfs/posix/vfs_posix.c index 2b4eef04ba..e02bd7aa32 100644 --- a/source4/ntvfs/posix/vfs_posix.c +++ b/source4/ntvfs/posix/vfs_posix.c @@ -55,6 +55,16 @@ static void pvfs_setup_options(struct pvfs_state *pvfs) } pvfs->share_name = talloc_strdup(pvfs, lp_servicename(snum)); + + pvfs->fs_attribs = + FS_ATTR_CASE_SENSITIVE_SEARCH | + FS_ATTR_CASE_PRESERVED_NAMES | + FS_ATTR_UNICODE_ON_DISK | + FS_ATTR_SPARSE_FILES; + + if (pvfs->flags & PVFS_FLAG_XATTR_ENABLE) { + pvfs->fs_attribs |= FS_ATTR_NAMED_STREAMS; + } } diff --git a/source4/ntvfs/posix/vfs_posix.h b/source4/ntvfs/posix/vfs_posix.h index 09d4bce085..a79c53ca2e 100644 --- a/source4/ntvfs/posix/vfs_posix.h +++ b/source4/ntvfs/posix/vfs_posix.h @@ -53,6 +53,9 @@ struct pvfs_state { /* the sharing violation timeout */ uint_t sharing_violation_delay; + + /* filesystem attributes (see FS_ATTR_*) */ + uint32_t fs_attribs; }; |