diff options
-rw-r--r-- | docs-xml/manpages-3/vfs_gpfs.8.xml | 21 | ||||
-rw-r--r-- | source3/modules/vfs_gpfs.c | 23 |
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, |