2 * VFS module with "not implemented " helper functions for other modules.
4 * Copyright (C) Tim Potter, 1999-2000
5 * Copyright (C) Alexander Bokovoy, 2002
6 * Copyright (C) Stefan (metze) Metzmacher, 2003,2018
7 * Copyright (C) Jeremy Allison 2009
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 3 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, see <http://www.gnu.org/licenses/>.
24 #include "lib/util/tevent_unix.h"
25 #include "lib/util/tevent_ntstatus.h"
28 int vfs_not_implemented_connect(
29 vfs_handle_struct
*handle
,
38 void vfs_not_implemented_disconnect(vfs_handle_struct
*handle
)
44 uint64_t vfs_not_implemented_disk_free(vfs_handle_struct
*handle
,
45 const struct smb_filename
*smb_fname
,
57 int vfs_not_implemented_get_quota(vfs_handle_struct
*handle
,
58 const struct smb_filename
*smb_fname
,
59 enum SMB_QUOTA_TYPE qtype
,
68 int vfs_not_implemented_set_quota(vfs_handle_struct
*handle
,
69 enum SMB_QUOTA_TYPE qtype
,
70 unid_t id
, SMB_DISK_QUOTA
*dq
)
77 int vfs_not_implemented_get_shadow_copy_data(vfs_handle_struct
*handle
,
79 struct shadow_copy_data
*shadow_copy_data
,
87 int vfs_not_implemented_statvfs(struct vfs_handle_struct
*handle
,
88 const struct smb_filename
*smb_fname
,
89 struct vfs_statvfs_struct
*statbuf
)
96 uint32_t vfs_not_implemented_fs_capabilities(struct vfs_handle_struct
*handle
,
97 enum timestamp_set_resolution
*p_ts_res
)
103 NTSTATUS
vfs_not_implemented_get_dfs_referrals(struct vfs_handle_struct
*handle
,
104 struct dfs_GetDFSReferral
*r
)
106 return NT_STATUS_NOT_IMPLEMENTED
;
110 NTSTATUS
vfs_not_implemented_create_dfs_pathat(struct vfs_handle_struct
*handle
,
111 struct files_struct
*dirfsp
,
112 const struct smb_filename
*smb_fname
,
113 const struct referral
*reflist
,
114 size_t referral_count
)
116 return NT_STATUS_NOT_IMPLEMENTED
;
120 NTSTATUS
vfs_not_implemented_read_dfs_pathat(struct vfs_handle_struct
*handle
,
122 struct files_struct
*dirfsp
,
123 struct smb_filename
*smb_fname
,
124 struct referral
**ppreflist
,
125 size_t *preferral_count
)
127 return NT_STATUS_NOT_IMPLEMENTED
;
131 NTSTATUS
vfs_not_implemented_snap_check_path(struct vfs_handle_struct
*handle
,
133 const char *service_path
,
136 return NT_STATUS_NOT_SUPPORTED
;
140 NTSTATUS
vfs_not_implemented_snap_create(struct vfs_handle_struct
*handle
,
142 const char *base_volume
,
148 return NT_STATUS_NOT_SUPPORTED
;
152 NTSTATUS
vfs_not_implemented_snap_delete(struct vfs_handle_struct
*handle
,
157 return NT_STATUS_NOT_SUPPORTED
;
161 DIR *vfs_not_implemented_fdopendir(vfs_handle_struct
*handle
, files_struct
*fsp
,
162 const char *mask
, uint32_t attr
)
169 struct dirent
*vfs_not_implemented_readdir(vfs_handle_struct
*handle
,
170 struct files_struct
*dirfsp
,
178 void vfs_not_implemented_rewind_dir(vfs_handle_struct
*handle
, DIR *dirp
)
184 int vfs_not_implemented_mkdirat(vfs_handle_struct
*handle
,
185 struct files_struct
*dirfsp
,
186 const struct smb_filename
*smb_fname
,
194 int vfs_not_implemented_closedir(vfs_handle_struct
*handle
, DIR *dir
)
201 int vfs_not_implemented_openat(vfs_handle_struct
*handle
,
202 const struct files_struct
*dirfsp
,
203 const struct smb_filename
*smb_fname
,
204 struct files_struct
*fsp
,
205 const struct vfs_open_how
*how
)
212 NTSTATUS
vfs_not_implemented_create_file(struct vfs_handle_struct
*handle
,
213 struct smb_request
*req
,
214 struct files_struct
*dirsp
,
215 struct smb_filename
*smb_fname
,
216 uint32_t access_mask
,
217 uint32_t share_access
,
218 uint32_t create_disposition
,
219 uint32_t create_options
,
220 uint32_t file_attributes
,
221 uint32_t oplock_request
,
222 const struct smb2_lease
*lease
,
223 uint64_t allocation_size
,
224 uint32_t private_flags
,
225 struct security_descriptor
*sd
,
226 struct ea_list
*ea_list
,
227 files_struct
**result
, int *pinfo
,
228 const struct smb2_create_blobs
*in_context_blobs
,
229 struct smb2_create_blobs
*out_context_blobs
)
231 return NT_STATUS_NOT_IMPLEMENTED
;
235 int vfs_not_implemented_close_fn(vfs_handle_struct
*handle
, files_struct
*fsp
)
242 ssize_t
vfs_not_implemented_pread(vfs_handle_struct
*handle
, files_struct
*fsp
,
243 void *data
, size_t n
, off_t offset
)
250 struct tevent_req
*vfs_not_implemented_pread_send(struct vfs_handle_struct
*handle
,
252 struct tevent_context
*ev
,
253 struct files_struct
*fsp
,
254 void *data
, size_t n
, off_t offset
)
260 ssize_t
vfs_not_implemented_pread_recv(struct tevent_req
*req
,
261 struct vfs_aio_state
*vfs_aio_state
)
263 vfs_aio_state
->error
= ENOSYS
;
268 ssize_t
vfs_not_implemented_pwrite(vfs_handle_struct
*handle
, files_struct
*fsp
,
269 const void *data
, size_t n
, off_t offset
)
276 struct tevent_req
*vfs_not_implemented_pwrite_send(struct vfs_handle_struct
*handle
,
278 struct tevent_context
*ev
,
279 struct files_struct
*fsp
,
281 size_t n
, off_t offset
)
287 ssize_t
vfs_not_implemented_pwrite_recv(struct tevent_req
*req
,
288 struct vfs_aio_state
*vfs_aio_state
)
290 vfs_aio_state
->error
= ENOSYS
;
295 off_t
vfs_not_implemented_lseek(vfs_handle_struct
*handle
, files_struct
*fsp
,
296 off_t offset
, int whence
)
303 ssize_t
vfs_not_implemented_sendfile(vfs_handle_struct
*handle
, int tofd
,
304 files_struct
*fromfsp
, const DATA_BLOB
*hdr
,
305 off_t offset
, size_t n
)
312 ssize_t
vfs_not_implemented_recvfile(vfs_handle_struct
*handle
, int fromfd
,
313 files_struct
*tofsp
, off_t offset
, size_t n
)
320 int vfs_not_implemented_renameat(vfs_handle_struct
*handle
,
321 files_struct
*srcfsp
,
322 const struct smb_filename
*smb_fname_src
,
323 files_struct
*dstfsp
,
324 const struct smb_filename
*smb_fname_dst
)
331 struct tevent_req
*vfs_not_implemented_fsync_send(struct vfs_handle_struct
*handle
,
333 struct tevent_context
*ev
,
334 struct files_struct
*fsp
)
340 int vfs_not_implemented_fsync_recv(struct tevent_req
*req
,
341 struct vfs_aio_state
*vfs_aio_state
)
343 vfs_aio_state
->error
= ENOSYS
;
348 int vfs_not_implemented_stat(vfs_handle_struct
*handle
, struct smb_filename
*smb_fname
)
355 int vfs_not_implemented_fstat(vfs_handle_struct
*handle
, files_struct
*fsp
,
356 SMB_STRUCT_STAT
*sbuf
)
363 int vfs_not_implemented_lstat(vfs_handle_struct
*handle
,
364 struct smb_filename
*smb_fname
)
371 int vfs_not_implemented_fstatat(
372 struct vfs_handle_struct
*handle
,
373 const struct files_struct
*dirfsp
,
374 const struct smb_filename
*smb_fname
,
375 SMB_STRUCT_STAT
*sbuf
,
383 uint64_t vfs_not_implemented_get_alloc_size(struct vfs_handle_struct
*handle
,
384 struct files_struct
*fsp
,
385 const SMB_STRUCT_STAT
*sbuf
)
392 int vfs_not_implemented_unlinkat(vfs_handle_struct
*handle
,
393 struct files_struct
*dirfsp
,
394 const struct smb_filename
*smb_fname
,
402 int vfs_not_implemented_fchmod(vfs_handle_struct
*handle
, files_struct
*fsp
,
410 int vfs_not_implemented_fchown(vfs_handle_struct
*handle
, files_struct
*fsp
,
411 uid_t uid
, gid_t gid
)
418 int vfs_not_implemented_lchown(vfs_handle_struct
*handle
,
419 const struct smb_filename
*smb_fname
,
428 int vfs_not_implemented_chdir(vfs_handle_struct
*handle
,
429 const struct smb_filename
*smb_fname
)
436 struct smb_filename
*vfs_not_implemented_getwd(vfs_handle_struct
*handle
,
444 int vfs_not_implemented_fntimes(vfs_handle_struct
*handle
,
446 struct smb_file_time
*ft
)
453 int vfs_not_implemented_ftruncate(vfs_handle_struct
*handle
, files_struct
*fsp
,
461 int vfs_not_implemented_fallocate(vfs_handle_struct
*handle
, files_struct
*fsp
,
462 uint32_t mode
, off_t offset
, off_t len
)
469 bool vfs_not_implemented_lock(vfs_handle_struct
*handle
, files_struct
*fsp
, int op
,
470 off_t offset
, off_t count
, int type
)
477 int vfs_not_implemented_filesystem_sharemode(struct vfs_handle_struct
*handle
,
478 struct files_struct
*fsp
,
479 uint32_t share_access
,
480 uint32_t access_mask
)
487 int vfs_not_implemented_fcntl(struct vfs_handle_struct
*handle
,
488 struct files_struct
*fsp
, int cmd
,
496 int vfs_not_implemented_linux_setlease(struct vfs_handle_struct
*handle
,
497 struct files_struct
*fsp
, int leasetype
)
504 bool vfs_not_implemented_getlock(vfs_handle_struct
*handle
, files_struct
*fsp
,
505 off_t
*poffset
, off_t
*pcount
, int *ptype
,
513 int vfs_not_implemented_symlinkat(vfs_handle_struct
*handle
,
514 const struct smb_filename
*link_contents
,
515 struct files_struct
*dirfsp
,
516 const struct smb_filename
*new_smb_fname
)
523 int vfs_not_implemented_vfs_readlinkat(vfs_handle_struct
*handle
,
524 const struct files_struct
*dirfsp
,
525 const struct smb_filename
*smb_fname
,
534 int vfs_not_implemented_linkat(vfs_handle_struct
*handle
,
535 files_struct
*srcfsp
,
536 const struct smb_filename
*old_smb_fname
,
537 files_struct
*dstfsp
,
538 const struct smb_filename
*new_smb_fname
,
546 int vfs_not_implemented_mknodat(vfs_handle_struct
*handle
,
547 files_struct
*dirfsp
,
548 const struct smb_filename
*smb_fname
,
557 struct smb_filename
*vfs_not_implemented_realpath(vfs_handle_struct
*handle
,
559 const struct smb_filename
*smb_fname
)
566 int vfs_not_implemented_fchflags(vfs_handle_struct
*handle
,
567 struct files_struct
*fsp
,
575 struct file_id
vfs_not_implemented_file_id_create(vfs_handle_struct
*handle
,
576 const SMB_STRUCT_STAT
*sbuf
)
585 uint64_t vfs_not_implemented_fs_file_id(vfs_handle_struct
*handle
,
586 const SMB_STRUCT_STAT
*sbuf
)
592 struct vfs_not_implemented_offload_read_state
{
597 struct tevent_req
*vfs_not_implemented_offload_read_send(
599 struct tevent_context
*ev
,
600 struct vfs_handle_struct
*handle
,
601 struct files_struct
*fsp
,
607 struct tevent_req
*req
= NULL
;
608 struct vfs_not_implemented_offload_read_state
*state
= NULL
;
610 req
= tevent_req_create(mem_ctx
, &state
,
611 struct vfs_not_implemented_offload_read_state
);
616 tevent_req_nterror(req
, NT_STATUS_NOT_IMPLEMENTED
);
617 return tevent_req_post(req
, ev
);
621 NTSTATUS
vfs_not_implemented_offload_read_recv(struct tevent_req
*req
,
622 struct vfs_handle_struct
*handle
,
626 DATA_BLOB
*_token_blob
)
630 if (tevent_req_is_nterror(req
, &status
)) {
631 tevent_req_received(req
);
635 tevent_req_received(req
);
639 struct vfs_not_implemented_offload_write_state
{
644 struct tevent_req
*vfs_not_implemented_offload_write_send(
645 struct vfs_handle_struct
*handle
,
647 struct tevent_context
*ev
,
650 off_t transfer_offset
,
651 struct files_struct
*dest_fsp
,
655 struct tevent_req
*req
;
656 struct vfs_not_implemented_offload_write_state
*state
;
658 req
= tevent_req_create(mem_ctx
, &state
,
659 struct vfs_not_implemented_offload_write_state
);
664 tevent_req_nterror(req
, NT_STATUS_NOT_IMPLEMENTED
);
665 return tevent_req_post(req
, ev
);
669 NTSTATUS
vfs_not_implemented_offload_write_recv(struct vfs_handle_struct
*handle
,
670 struct tevent_req
*req
,
675 if (tevent_req_is_nterror(req
, &status
)) {
676 tevent_req_received(req
);
680 tevent_req_received(req
);
685 NTSTATUS
vfs_not_implemented_fget_compression(struct vfs_handle_struct
*handle
,
687 struct files_struct
*fsp
,
688 uint16_t *_compression_fmt
)
690 return NT_STATUS_INVALID_DEVICE_REQUEST
;
694 NTSTATUS
vfs_not_implemented_set_compression(struct vfs_handle_struct
*handle
,
696 struct files_struct
*fsp
,
697 uint16_t compression_fmt
)
699 return NT_STATUS_INVALID_DEVICE_REQUEST
;
703 NTSTATUS
vfs_not_implemented_fstreaminfo(struct vfs_handle_struct
*handle
,
704 struct files_struct
*fsp
,
706 unsigned int *num_streams
,
707 struct stream_struct
**streams
)
709 return NT_STATUS_NOT_IMPLEMENTED
;
713 NTSTATUS
vfs_not_implemented_get_real_filename_at(
714 struct vfs_handle_struct
*handle
,
715 struct files_struct
*dirfsp
,
720 return NT_STATUS_NOT_IMPLEMENTED
;
724 const char *vfs_not_implemented_connectpath(
725 struct vfs_handle_struct
*handle
,
726 const struct files_struct
*dirfsp
,
727 const struct smb_filename
*smb_fname
)
734 NTSTATUS
vfs_not_implemented_brl_lock_windows(struct vfs_handle_struct
*handle
,
735 struct byte_range_lock
*br_lck
,
736 struct lock_struct
*plock
)
738 return NT_STATUS_NOT_IMPLEMENTED
;
742 bool vfs_not_implemented_brl_unlock_windows(struct vfs_handle_struct
*handle
,
743 struct byte_range_lock
*br_lck
,
744 const struct lock_struct
*plock
)
751 bool vfs_not_implemented_strict_lock_check(struct vfs_handle_struct
*handle
,
752 struct files_struct
*fsp
,
753 struct lock_struct
*plock
)
760 NTSTATUS
vfs_not_implemented_translate_name(struct vfs_handle_struct
*handle
,
761 const char *mapped_name
,
762 enum vfs_translate_direction direction
,
763 TALLOC_CTX
*mem_ctx
, char **pmapped_name
)
765 return NT_STATUS_NOT_IMPLEMENTED
;
769 NTSTATUS
vfs_not_implemented_parent_pathname(struct vfs_handle_struct
*handle
,
771 const struct smb_filename
*smb_fname_in
,
772 struct smb_filename
**parent_dir_out
,
773 struct smb_filename
**atname_out
)
775 return NT_STATUS_NOT_IMPLEMENTED
;
779 NTSTATUS
vfs_not_implemented_fsctl(struct vfs_handle_struct
*handle
,
780 struct files_struct
*fsp
,
783 uint16_t req_flags
, /* Needed for UNICODE ... */
784 const uint8_t *_in_data
,
787 uint32_t max_out_len
, uint32_t *out_len
)
789 return NT_STATUS_NOT_IMPLEMENTED
;
793 NTSTATUS
vfs_not_implemented_freaddir_attr(struct vfs_handle_struct
*handle
,
794 struct files_struct
*fsp
,
796 struct readdir_attr_data
**pattr_data
)
798 return NT_STATUS_NOT_IMPLEMENTED
;
801 struct vfs_not_implemented_get_dos_attributes_state
{
802 struct vfs_aio_state aio_state
;
807 struct tevent_req
*vfs_not_implemented_get_dos_attributes_send(
809 struct tevent_context
*ev
,
810 struct vfs_handle_struct
*handle
,
811 files_struct
*dir_fsp
,
812 struct smb_filename
*smb_fname
)
814 struct tevent_req
*req
= NULL
;
815 struct vfs_not_implemented_get_dos_attributes_state
*state
= NULL
;
817 req
= tevent_req_create(mem_ctx
, &state
,
818 struct vfs_not_implemented_get_dos_attributes_state
);
823 tevent_req_nterror(req
, NT_STATUS_NOT_IMPLEMENTED
);
824 return tevent_req_post(req
, ev
);
828 NTSTATUS
vfs_not_implemented_get_dos_attributes_recv(
829 struct tevent_req
*req
,
830 struct vfs_aio_state
*aio_state
,
833 struct vfs_not_implemented_get_dos_attributes_state
*state
=
835 struct vfs_not_implemented_get_dos_attributes_state
);
838 if (tevent_req_is_nterror(req
, &status
)) {
839 tevent_req_received(req
);
843 *aio_state
= state
->aio_state
;
844 *dosmode
= state
->dosmode
;
845 tevent_req_received(req
);
850 NTSTATUS
vfs_not_implemented_fget_dos_attributes(struct vfs_handle_struct
*handle
,
851 struct files_struct
*fsp
,
854 return NT_STATUS_NOT_IMPLEMENTED
;
858 NTSTATUS
vfs_not_implemented_fset_dos_attributes(struct vfs_handle_struct
*handle
,
859 struct files_struct
*fsp
,
862 return NT_STATUS_NOT_IMPLEMENTED
;
866 NTSTATUS
vfs_not_implemented_fget_nt_acl(vfs_handle_struct
*handle
, files_struct
*fsp
,
867 uint32_t security_info
,
869 struct security_descriptor
**ppdesc
)
871 return NT_STATUS_NOT_IMPLEMENTED
;
875 NTSTATUS
vfs_not_implemented_fset_nt_acl(vfs_handle_struct
*handle
, files_struct
*fsp
,
876 uint32_t security_info_sent
,
877 const struct security_descriptor
*psd
)
879 return NT_STATUS_NOT_IMPLEMENTED
;
883 SMB_ACL_T
vfs_not_implemented_sys_acl_get_fd(vfs_handle_struct
*handle
,
889 return (SMB_ACL_T
) NULL
;
893 int vfs_not_implemented_sys_acl_blob_get_fd(vfs_handle_struct
*handle
,
894 files_struct
*fsp
, TALLOC_CTX
*mem_ctx
,
895 char **blob_description
, DATA_BLOB
*blob
)
902 int vfs_not_implemented_sys_acl_set_fd(vfs_handle_struct
*handle
,
903 struct files_struct
*fsp
,
912 int vfs_not_implemented_sys_acl_delete_def_fd(vfs_handle_struct
*handle
,
913 struct files_struct
*fsp
)
919 struct vfs_not_implemented_getxattrat_state
{
920 struct vfs_aio_state aio_state
;
922 uint8_t *xattr_value
;
926 struct tevent_req
*vfs_not_implemented_getxattrat_send(
928 struct tevent_context
*ev
,
929 struct vfs_handle_struct
*handle
,
930 files_struct
*dir_fsp
,
931 const struct smb_filename
*smb_fname
,
932 const char *xattr_name
,
935 struct tevent_req
*req
= NULL
;
936 struct vfs_not_implemented_getxattrat_state
*state
= NULL
;
938 req
= tevent_req_create(mem_ctx
, &state
,
939 struct vfs_not_implemented_getxattrat_state
);
944 tevent_req_error(req
, ENOSYS
);
945 return tevent_req_post(req
, ev
);
949 ssize_t
vfs_not_implemented_getxattrat_recv(struct tevent_req
*req
,
950 struct vfs_aio_state
*aio_state
,
952 uint8_t **xattr_value
)
954 struct vfs_not_implemented_getxattrat_state
*state
= tevent_req_data(
955 req
, struct vfs_not_implemented_getxattrat_state
);
958 if (tevent_req_is_unix_error(req
, &aio_state
->error
)) {
959 tevent_req_received(req
);
963 *aio_state
= state
->aio_state
;
964 xattr_size
= state
->xattr_size
;
965 if (xattr_value
!= NULL
) {
966 *xattr_value
= talloc_move(mem_ctx
, &state
->xattr_value
);
969 tevent_req_received(req
);
974 ssize_t
vfs_not_implemented_fgetxattr(vfs_handle_struct
*handle
,
975 struct files_struct
*fsp
, const char *name
,
976 void *value
, size_t size
)
983 ssize_t
vfs_not_implemented_flistxattr(vfs_handle_struct
*handle
,
984 struct files_struct
*fsp
, char *list
,
992 int vfs_not_implemented_fremovexattr(vfs_handle_struct
*handle
,
993 struct files_struct
*fsp
, const char *name
)
1000 int vfs_not_implemented_fsetxattr(vfs_handle_struct
*handle
, struct files_struct
*fsp
,
1001 const char *name
, const void *value
, size_t size
,
1009 bool vfs_not_implemented_aio_force(struct vfs_handle_struct
*handle
,
1010 struct files_struct
*fsp
)
1017 NTSTATUS
vfs_not_implemented_audit_file(struct vfs_handle_struct
*handle
,
1018 struct smb_filename
*file
,
1019 struct security_acl
*sacl
,
1020 uint32_t access_requested
,
1021 uint32_t access_denied
)
1023 return NT_STATUS_NOT_IMPLEMENTED
;
1027 NTSTATUS
vfs_not_implemented_durable_cookie(struct vfs_handle_struct
*handle
,
1028 struct files_struct
*fsp
,
1029 TALLOC_CTX
*mem_ctx
,
1032 return NT_STATUS_NOT_IMPLEMENTED
;
1036 NTSTATUS
vfs_not_implemented_durable_disconnect(struct vfs_handle_struct
*handle
,
1037 struct files_struct
*fsp
,
1038 const DATA_BLOB old_cookie
,
1039 TALLOC_CTX
*mem_ctx
,
1040 DATA_BLOB
*new_cookie
)
1042 return NT_STATUS_NOT_IMPLEMENTED
;
1046 NTSTATUS
vfs_not_implemented_durable_reconnect(struct vfs_handle_struct
*handle
,
1047 struct smb_request
*smb1req
,
1048 struct smbXsrv_open
*op
,
1049 const DATA_BLOB old_cookie
,
1050 TALLOC_CTX
*mem_ctx
,
1051 struct files_struct
**fsp
,
1052 DATA_BLOB
*new_cookie
)
1054 return NT_STATUS_NOT_IMPLEMENTED
;
1057 /* VFS operations structure */
1059 static struct vfs_fn_pointers vfs_not_implemented_fns
= {
1060 /* Disk operations */
1062 .connect_fn
= vfs_not_implemented_connect
,
1063 .disconnect_fn
= vfs_not_implemented_disconnect
,
1064 .disk_free_fn
= vfs_not_implemented_disk_free
,
1065 .get_quota_fn
= vfs_not_implemented_get_quota
,
1066 .set_quota_fn
= vfs_not_implemented_set_quota
,
1067 .get_shadow_copy_data_fn
= vfs_not_implemented_get_shadow_copy_data
,
1068 .statvfs_fn
= vfs_not_implemented_statvfs
,
1069 .fs_capabilities_fn
= vfs_not_implemented_fs_capabilities
,
1070 .get_dfs_referrals_fn
= vfs_not_implemented_get_dfs_referrals
,
1071 .create_dfs_pathat_fn
= vfs_not_implemented_create_dfs_pathat
,
1072 .read_dfs_pathat_fn
= vfs_not_implemented_read_dfs_pathat
,
1073 .snap_check_path_fn
= vfs_not_implemented_snap_check_path
,
1074 .snap_create_fn
= vfs_not_implemented_snap_create
,
1075 .snap_delete_fn
= vfs_not_implemented_snap_delete
,
1077 /* Directory operations */
1079 .fdopendir_fn
= vfs_not_implemented_fdopendir
,
1080 .readdir_fn
= vfs_not_implemented_readdir
,
1081 .rewind_dir_fn
= vfs_not_implemented_rewind_dir
,
1082 .mkdirat_fn
= vfs_not_implemented_mkdirat
,
1083 .closedir_fn
= vfs_not_implemented_closedir
,
1085 /* File operations */
1087 .openat_fn
= vfs_not_implemented_openat
,
1088 .create_file_fn
= vfs_not_implemented_create_file
,
1089 .close_fn
= vfs_not_implemented_close_fn
,
1090 .pread_fn
= vfs_not_implemented_pread
,
1091 .pread_send_fn
= vfs_not_implemented_pread_send
,
1092 .pread_recv_fn
= vfs_not_implemented_pread_recv
,
1093 .pwrite_fn
= vfs_not_implemented_pwrite
,
1094 .pwrite_send_fn
= vfs_not_implemented_pwrite_send
,
1095 .pwrite_recv_fn
= vfs_not_implemented_pwrite_recv
,
1096 .lseek_fn
= vfs_not_implemented_lseek
,
1097 .sendfile_fn
= vfs_not_implemented_sendfile
,
1098 .recvfile_fn
= vfs_not_implemented_recvfile
,
1099 .renameat_fn
= vfs_not_implemented_renameat
,
1100 .fsync_send_fn
= vfs_not_implemented_fsync_send
,
1101 .fsync_recv_fn
= vfs_not_implemented_fsync_recv
,
1102 .stat_fn
= vfs_not_implemented_stat
,
1103 .fstat_fn
= vfs_not_implemented_fstat
,
1104 .lstat_fn
= vfs_not_implemented_lstat
,
1105 .fstatat_fn
= vfs_not_implemented_fstatat
,
1106 .get_alloc_size_fn
= vfs_not_implemented_get_alloc_size
,
1107 .unlinkat_fn
= vfs_not_implemented_unlinkat
,
1108 .fchmod_fn
= vfs_not_implemented_fchmod
,
1109 .fchown_fn
= vfs_not_implemented_fchown
,
1110 .lchown_fn
= vfs_not_implemented_lchown
,
1111 .chdir_fn
= vfs_not_implemented_chdir
,
1112 .getwd_fn
= vfs_not_implemented_getwd
,
1113 .fntimes_fn
= vfs_not_implemented_fntimes
,
1114 .ftruncate_fn
= vfs_not_implemented_ftruncate
,
1115 .fallocate_fn
= vfs_not_implemented_fallocate
,
1116 .lock_fn
= vfs_not_implemented_lock
,
1117 .filesystem_sharemode_fn
= vfs_not_implemented_filesystem_sharemode
,
1118 .fcntl_fn
= vfs_not_implemented_fcntl
,
1119 .linux_setlease_fn
= vfs_not_implemented_linux_setlease
,
1120 .getlock_fn
= vfs_not_implemented_getlock
,
1121 .symlinkat_fn
= vfs_not_implemented_symlinkat
,
1122 .readlinkat_fn
= vfs_not_implemented_vfs_readlinkat
,
1123 .linkat_fn
= vfs_not_implemented_linkat
,
1124 .mknodat_fn
= vfs_not_implemented_mknodat
,
1125 .realpath_fn
= vfs_not_implemented_realpath
,
1126 .fchflags_fn
= vfs_not_implemented_fchflags
,
1127 .file_id_create_fn
= vfs_not_implemented_file_id_create
,
1128 .fs_file_id_fn
= vfs_not_implemented_fs_file_id
,
1129 .offload_read_send_fn
= vfs_not_implemented_offload_read_send
,
1130 .offload_read_recv_fn
= vfs_not_implemented_offload_read_recv
,
1131 .offload_write_send_fn
= vfs_not_implemented_offload_write_send
,
1132 .offload_write_recv_fn
= vfs_not_implemented_offload_write_recv
,
1133 .fget_compression_fn
= vfs_not_implemented_fget_compression
,
1134 .set_compression_fn
= vfs_not_implemented_set_compression
,
1136 .fstreaminfo_fn
= vfs_not_implemented_fstreaminfo
,
1137 .get_real_filename_at_fn
= vfs_not_implemented_get_real_filename_at
,
1138 .connectpath_fn
= vfs_not_implemented_connectpath
,
1139 .brl_lock_windows_fn
= vfs_not_implemented_brl_lock_windows
,
1140 .brl_unlock_windows_fn
= vfs_not_implemented_brl_unlock_windows
,
1141 .strict_lock_check_fn
= vfs_not_implemented_strict_lock_check
,
1142 .translate_name_fn
= vfs_not_implemented_translate_name
,
1143 .parent_pathname_fn
= vfs_not_implemented_parent_pathname
,
1144 .fsctl_fn
= vfs_not_implemented_fsctl
,
1145 .freaddir_attr_fn
= vfs_not_implemented_freaddir_attr
,
1146 .audit_file_fn
= vfs_not_implemented_audit_file
,
1148 /* DOS attributes. */
1149 .get_dos_attributes_send_fn
= vfs_not_implemented_get_dos_attributes_send
,
1150 .get_dos_attributes_recv_fn
= vfs_not_implemented_get_dos_attributes_recv
,
1151 .fget_dos_attributes_fn
= vfs_not_implemented_fget_dos_attributes
,
1152 .fset_dos_attributes_fn
= vfs_not_implemented_fset_dos_attributes
,
1154 /* NT ACL operations. */
1156 .fget_nt_acl_fn
= vfs_not_implemented_fget_nt_acl
,
1157 .fset_nt_acl_fn
= vfs_not_implemented_fset_nt_acl
,
1159 /* POSIX ACL operations. */
1161 .sys_acl_get_fd_fn
= vfs_not_implemented_sys_acl_get_fd
,
1162 .sys_acl_blob_get_fd_fn
= vfs_not_implemented_sys_acl_blob_get_fd
,
1163 .sys_acl_set_fd_fn
= vfs_not_implemented_sys_acl_set_fd
,
1164 .sys_acl_delete_def_fd_fn
= vfs_not_implemented_sys_acl_delete_def_fd
,
1166 /* EA operations. */
1167 .getxattrat_send_fn
= vfs_not_implemented_getxattrat_send
,
1168 .getxattrat_recv_fn
= vfs_not_implemented_getxattrat_recv
,
1169 .fgetxattr_fn
= vfs_not_implemented_fgetxattr
,
1170 .flistxattr_fn
= vfs_not_implemented_flistxattr
,
1171 .fremovexattr_fn
= vfs_not_implemented_fremovexattr
,
1172 .fsetxattr_fn
= vfs_not_implemented_fsetxattr
,
1174 /* aio operations */
1175 .aio_force_fn
= vfs_not_implemented_aio_force
,
1177 /* durable handle operations */
1178 .durable_cookie_fn
= vfs_not_implemented_durable_cookie
,
1179 .durable_disconnect_fn
= vfs_not_implemented_durable_disconnect
,
1180 .durable_reconnect_fn
= vfs_not_implemented_durable_reconnect
,
1184 NTSTATUS
vfs_not_implemented_init(TALLOC_CTX
*ctx
)
1187 * smb_vfs_assert_all_fns() makes sure every
1188 * call is implemented.
1190 smb_vfs_assert_all_fns(&vfs_not_implemented_fns
, "vfs_not_implemented");
1191 return smb_register_vfs(SMB_VFS_INTERFACE_VERSION
, "vfs_not_implemented",
1192 &vfs_not_implemented_fns
);