[PATCH v3 08/13] vfs_btrfs: advertise per-file compression capability

David Disseldorp ddiss at samba.org
Tue Nov 5 04:57:58 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 |  3 +++
 source3/modules/vfs_btrfs.c       | 15 +++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/docs-xml/manpages/vfs_btrfs.8.xml b/docs-xml/manpages/vfs_btrfs.8.xml
index 01f788c..2c614a6 100644
--- a/docs-xml/manpages/vfs_btrfs.8.xml
+++ b/docs-xml/manpages/vfs_btrfs.8.xml
@@ -43,6 +43,9 @@
 		module maps the request to a Btrfs clone range IOCTL, instead
 		of performing reads and writes required by a traditional copy.
 		Doing so saves storage capacity and greatly reduces disk IO.
+
+		This module also exposes Btrfs per-file compression support to
+		SMB clients via the get/set compression fsctls.
 	</para>
 
 	<para>
diff --git a/source3/modules/vfs_btrfs.c b/source3/modules/vfs_btrfs.c
index d65b46a..a49f1fb 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