[PATCH v4 09/14] vfs_btrfs: advertise per-file compression capability
David Disseldorp
ddiss at samba.org
Mon Nov 18 06:54:34 MST 2013
Plumb into the get_fs_capabilities code path to advertise the
FILE_FILE_COMPRESSION attribute.
Also, document file compression support in the VFS btrfs man page.
Signed-off-by: David Disseldorp <ddiss at samba.org>
---
docs-xml/manpages/vfs_btrfs.8.xml | 5 +++++
source3/modules/vfs_btrfs.c | 15 +++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/docs-xml/manpages/vfs_btrfs.8.xml b/docs-xml/manpages/vfs_btrfs.8.xml
index 01f788c..6437321 100644
--- a/docs-xml/manpages/vfs_btrfs.8.xml
+++ b/docs-xml/manpages/vfs_btrfs.8.xml
@@ -46,6 +46,11 @@
</para>
<para>
+ This module also exposes Btrfs per-file compression support to
+ SMB clients via the get/set compression fsctls.
+ </para>
+
+ <para>
This module is stackable.
</para>
</refsect1>
diff --git a/source3/modules/vfs_btrfs.c b/source3/modules/vfs_btrfs.c
index 66bb482..c6e90fd 100644
--- a/source3/modules/vfs_btrfs.c
+++ b/source3/modules/vfs_btrfs.c
@@ -30,6 +30,20 @@
#include "librpc/gen_ndr/ioctl.h"
#include "lib/util/tevent_ntstatus.h"
+static uint32_t btrfs_fs_capabilities(struct vfs_handle_struct *handle,
+ enum timestamp_set_resolution *_ts_res)
+{
+ uint32_t fs_capabilities;
+ enum timestamp_set_resolution ts_res;
+
+ /* inherit default capabilities, expose compression support */
+ fs_capabilities = SMB_VFS_NEXT_FS_CAPABILITIES(handle, &ts_res);
+ fs_capabilities |= FILE_FILE_COMPRESSION;
+ *_ts_res = ts_res;
+
+ return fs_capabilities;
+}
+
struct btrfs_ioctl_clone_range_args {
int64_t src_fd;
uint64_t src_offset;
@@ -301,6 +315,7 @@ err_out:
static struct vfs_fn_pointers btrfs_fns = {
+ .fs_capabilities_fn = btrfs_fs_capabilities,
.copy_chunk_send_fn = btrfs_copy_chunk_send,
.copy_chunk_recv_fn = btrfs_copy_chunk_recv,
.get_compression_fn = btrfs_get_compression,
--
1.8.1.4
More information about the samba-technical
mailing list