vfs_btrfs: advertise per-file compression capability
authorDavid Disseldorp <ddiss@samba.org>
Mon, 18 Nov 2013 13:54:34 +0000 (14:54 +0100)
committerJeremy Allison <jra@samba.org>
Fri, 22 Nov 2013 16:56:45 +0000 (08:56 -0800)
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@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
docs-xml/manpages/vfs_btrfs.8.xml
source3/modules/vfs_btrfs.c

index 01f788c8733f875a1a07d55cc01a91578a908d85..643732186a78e10d9a25bd4461ea6ebd1f93ff9b 100644 (file)
                Doing so saves storage capacity and greatly reduces disk IO.
        </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>
index 66bb4822b69001a890327466cc6cac369f60dbd2..c6e90fd052aa0e8ce8a504aa1ae8c9507c19eac0 100644 (file)
 #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,