summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2011-02-25 07:18:46 -0700
committerVolker Lendecke <vlendec@samba.org>2011-03-02 18:39:21 +0100
commit73ce3e156e52fdc42e8e16114ed2f436878ced05 (patch)
treeff8c840215b1b9f6cab6ecadf8afd693a6f82806
parentcf7dac6fbccca6667e5ed20b199e80701b8a6bd4 (diff)
downloadsamba-73ce3e156e52fdc42e8e16114ed2f436878ced05.tar.gz
samba-73ce3e156e52fdc42e8e16114ed2f436878ced05.tar.bz2
samba-73ce3e156e52fdc42e8e16114ed2f436878ced05.zip
s3: Announce HSM in the gpfs module
-rw-r--r--docs-xml/manpages-3/vfs_gpfs.8.xml21
-rw-r--r--source3/modules/vfs_gpfs.c23
2 files changed, 44 insertions, 0 deletions
diff --git a/docs-xml/manpages-3/vfs_gpfs.8.xml b/docs-xml/manpages-3/vfs_gpfs.8.xml
index 3372a951e2..5f89ffac77 100644
--- a/docs-xml/manpages-3/vfs_gpfs.8.xml
+++ b/docs-xml/manpages-3/vfs_gpfs.8.xml
@@ -104,6 +104,27 @@
</listitem>
</varlistentry>
+
+ <varlistentry>
+
+ <term>gpfs:hsm = [ yes | no ]</term>
+ <listitem>
+ <para>
+ Enable/Disable announcing if this FS has HSM enabled.
+ </para>
+
+ <itemizedlist>
+ <listitem><para>
+ <command>no(default)</command> - Do not announce HSM.
+ </para></listitem>
+ <listitem><para>
+ <command>no</command> - Announce HSM.
+ </para></listitem>
+ </itemizedlist>
+ </listitem>
+
+ </varlistentry>
+
<varlistentry>
<term>gpfs:getrealfilename = [ yes | no ]</term>
diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c
index d36cdbe2a9..4ee826b71b 100644
--- a/source3/modules/vfs_gpfs.c
+++ b/source3/modules/vfs_gpfs.c
@@ -34,6 +34,7 @@
struct gpfs_config_data {
bool sharemodes;
bool leases;
+ bool hsm;
};
@@ -1211,6 +1212,9 @@ int vfs_gpfs_connect(struct vfs_handle_struct *handle, const char *service,
config->leases = lp_parm_bool(SNUM(handle->conn), "gpfs",
"leases", true);
+ config->hsm = lp_parm_bool(SNUM(handle->conn), "gpfs",
+ "hsm", false);
+
SMB_VFS_HANDLE_SET_DATA(handle, config,
NULL, struct syncops_config_data,
return -1);
@@ -1218,9 +1222,28 @@ int vfs_gpfs_connect(struct vfs_handle_struct *handle, const char *service,
return 0;
}
+static uint32_t vfs_gpfs_capabilities(struct vfs_handle_struct *handle,
+ enum timestamp_set_resolution *p_ts_res)
+{
+ struct gpfs_config_data *config;
+ uint32_t next;
+
+ next = SMB_VFS_NEXT_FS_CAPABILITIES(handle, p_ts_res);
+
+ SMB_VFS_HANDLE_GET_DATA(handle, config,
+ struct gpfs_config_data,
+ return next);
+
+ if (config->hsm) {
+ next |= FILE_SUPPORTS_REMOTE_STORAGE;
+ }
+ return next;
+}
+
static struct vfs_fn_pointers vfs_gpfs_fns = {
.connect_fn = vfs_gpfs_connect,
+ .fs_capabilities = vfs_gpfs_capabilities,
.kernel_flock = vfs_gpfs_kernel_flock,
.linux_setlease = vfs_gpfs_setlease,
.get_real_filename = vfs_gpfs_get_real_filename,