summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Prouty <tprouty@samba.org>2009-02-27 16:25:31 -0800
committerTim Prouty <tprouty@samba.org>2009-03-03 13:06:16 -0800
commit243d4e8a0846f9b873573ec504fb2f811be7d25c (patch)
treed9f6a3ee84649c8342dac483a26cce6613338d78
parentb00204a46153a406a6c63792b1939bd3ad74ba71 (diff)
downloadsamba-243d4e8a0846f9b873573ec504fb2f811be7d25c.tar.gz
samba-243d4e8a0846f9b873573ec504fb2f811be7d25c.tar.bz2
samba-243d4e8a0846f9b873573ec504fb2f811be7d25c.zip
s3 OneFS: Add parameter to ignore streams
-rw-r--r--source3/modules/onefs_config.h2
-rw-r--r--source3/modules/onefs_open.c2
-rw-r--r--source3/modules/onefs_streams.c7
-rw-r--r--source3/modules/vfs_onefs.c9
4 files changed, 17 insertions, 3 deletions
diff --git a/source3/modules/onefs_config.h b/source3/modules/onefs_config.h
index 27cbb0ad74..f0f48e6379 100644
--- a/source3/modules/onefs_config.h
+++ b/source3/modules/onefs_config.h
@@ -64,6 +64,8 @@ enum onefs_acl_wire_format
#define PARM_DOT_SNAP_TILDE_DEFAULT true
#define PARM_IGNORE_SACLS "ignore sacls"
#define PARM_IGNORE_SACLS_DEFAULT false
+#define PARM_IGNORE_STREAMS "ignore streams"
+#define PARM_IGNORE_STREAMS_DEFAULT false
#define PARM_MTIME_NOW "mtime now files"
#define PARM_MTIME_NOW_DEFAULT NULL
#define PARM_MTIME_STATIC "mtime static files"
diff --git a/source3/modules/onefs_open.c b/source3/modules/onefs_open.c
index 9043be8e19..d3ba0ac979 100644
--- a/source3/modules/onefs_open.c
+++ b/source3/modules/onefs_open.c
@@ -196,7 +196,7 @@ static NTSTATUS onefs_open_file(files_struct *fsp,
&base, &stream);
}
/* It's a stream, so pass in the base_fd */
- if (stream != NULL) {
+ if ((conn->fs_capabilities & FILE_NAMED_STREAMS) && stream != NULL) {
SMB_ASSERT(fsp->base_fsp);
/*
diff --git a/source3/modules/onefs_streams.c b/source3/modules/onefs_streams.c
index 9f5d5e2284..05b36d7d3c 100644
--- a/source3/modules/onefs_streams.c
+++ b/source3/modules/onefs_streams.c
@@ -671,6 +671,11 @@ NTSTATUS onefs_streaminfo(vfs_handle_struct *handle,
state.streams = NULL;
state.num_streams = 0;
+ if (lp_parm_bool(SNUM(handle->conn), PARM_ONEFS_TYPE,
+ PARM_IGNORE_STREAMS, PARM_IGNORE_STREAMS_DEFAULT)) {
+ goto out;
+ }
+
/* Add the default stream. */
if (S_ISREG(sbuf.st_mode)) {
if (!add_one_stream(mem_ctx,
@@ -702,7 +707,7 @@ NTSTATUS onefs_streaminfo(vfs_handle_struct *handle,
return state.status;
}
}
-
+ out:
*num_streams = state.num_streams;
*streams = state.streams;
return NT_STATUS_OK;
diff --git a/source3/modules/vfs_onefs.c b/source3/modules/vfs_onefs.c
index f277245bdc..2ec6e069c3 100644
--- a/source3/modules/vfs_onefs.c
+++ b/source3/modules/vfs_onefs.c
@@ -222,7 +222,14 @@ static int onefs_ntimes(vfs_handle_struct *handle, const char *fname,
static uint32_t onefs_fs_capabilities(struct vfs_handle_struct *handle)
{
- return SMB_VFS_NEXT_FS_CAPABILITIES(handle) | FILE_NAMED_STREAMS;
+ uint32_t result = 0;
+
+ if (!lp_parm_bool(SNUM(handle->conn), PARM_ONEFS_TYPE,
+ PARM_IGNORE_STREAMS, PARM_IGNORE_STREAMS_DEFAULT)) {
+ result |= FILE_NAMED_STREAMS;
+ }
+
+ return result | SMB_VFS_NEXT_FS_CAPABILITIES(handle);
}
static vfs_op_tuple onefs_ops[] = {