diff options
author | David Disseldorp <ddiss@samba.org> | 2013-11-18 14:54:30 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2013-11-22 08:56:45 -0800 |
commit | d8d5d4c7428683da04fa4c8b344504e7044f9b1c (patch) | |
tree | 5ce00faa4dbb6113f2c6d18ae312dd6dc5bc39fd /source3/include/vfs.h | |
parent | 2b435ad4b45ec39b0cf70f55699daba3bcfcee08 (diff) | |
download | samba-d8d5d4c7428683da04fa4c8b344504e7044f9b1c.tar.gz samba-d8d5d4c7428683da04fa4c8b344504e7044f9b1c.tar.xz samba-d8d5d4c7428683da04fa4c8b344504e7044f9b1c.zip |
vfs: add [GET/SET]_COMPRESSION hooks
The VFS interfaces are sychronous, as the operations only modify
meta-data.
These hooks are dependent on support for transparent compression by the
underlying filesystem - vfs_default returns INVALID_DEVICE_REQUEST.
Support for other filesystems providing transparent comression, such as
Btrfs and ZFS, can be added in future.
The get_compression function takes fsp and smb_fname arguments. The
smb_fname argument is needed due to the current dosmode() code-path.
Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/include/vfs.h')
-rw-r--r-- | source3/include/vfs.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/source3/include/vfs.h b/source3/include/vfs.h index 0e5b0748678..1bea0b8df01 100644 --- a/source3/include/vfs.h +++ b/source3/include/vfs.h @@ -154,6 +154,7 @@ /* Leave at 31 - not yet released. add SMB_VFS_COPY_CHUNK() */ /* Leave at 31 - not yet released. Remove the unused fsp->pending_break_messages array */ +/* Leave at 31 - not yet released. add SMB_VFS_[GET/SET]_COMPRESSION() */ #define SMB_VFS_INTERFACE_VERSION 31 @@ -626,6 +627,15 @@ struct vfs_fn_pointers { NTSTATUS (*copy_chunk_recv_fn)(struct vfs_handle_struct *handle, struct tevent_req *req, off_t *copied); + NTSTATUS (*get_compression_fn)(struct vfs_handle_struct *handle, + TALLOC_CTX *mem_ctx, + struct files_struct *fsp, + struct smb_filename *smb_fname, + uint16_t *_compression_fmt); + NTSTATUS (*set_compression_fn)(struct vfs_handle_struct *handle, + TALLOC_CTX *mem_ctx, + struct files_struct *fsp, + uint16_t compression_fmt); NTSTATUS (*streaminfo_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp, @@ -1109,6 +1119,15 @@ struct tevent_req *smb_vfs_call_copy_chunk_send(struct vfs_handle_struct *handle NTSTATUS smb_vfs_call_copy_chunk_recv(struct vfs_handle_struct *handle, struct tevent_req *req, off_t *copied); +NTSTATUS smb_vfs_call_get_compression(struct vfs_handle_struct *handle, + TALLOC_CTX *mem_ctx, + struct files_struct *fsp, + struct smb_filename *smb_fname, + uint16_t *_compression_fmt); +NTSTATUS smb_vfs_call_set_compression(struct vfs_handle_struct *handle, + TALLOC_CTX *mem_ctx, + struct files_struct *fsp, + uint16_t compression_fmt); NTSTATUS smb_vfs_call_fget_nt_acl(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 security_info, |