diff options
author | Volker Lendecke <vl@samba.org> | 2009-07-23 20:28:58 -0400 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2009-07-24 11:42:05 -0400 |
commit | 033185e2a1b2892fe8dc74a18a38e5e13e08cb22 (patch) | |
tree | 67f652f7c4caba015eb3ad7b5ad7d0f6ed56cc8d /source3/modules/vfs_default.c | |
parent | be5cf236968658263b0be5e1e4742741c70f65f8 (diff) | |
download | samba-033185e2a1b2892fe8dc74a18a38e5e13e08cb22.tar.gz samba-033185e2a1b2892fe8dc74a18a38e5e13e08cb22.tar.bz2 samba-033185e2a1b2892fe8dc74a18a38e5e13e08cb22.zip |
Make the smbd VFS typesafe
Diffstat (limited to 'source3/modules/vfs_default.c')
-rw-r--r-- | source3/modules/vfs_default.c | 365 |
1 files changed, 121 insertions, 244 deletions
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index cdfd28c571..a4922e7e05 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -1573,270 +1573,147 @@ static int vfswrap_set_offline(struct vfs_handle_struct *handle, const char *pat return -1; } -static vfs_op_tuple vfs_default_ops[] = { - +static struct vfs_fn_pointers vfs_default_fns = { /* Disk operations */ - {SMB_VFS_OP(vfswrap_connect), SMB_VFS_OP_CONNECT, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_disconnect), SMB_VFS_OP_DISCONNECT, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_disk_free), SMB_VFS_OP_DISK_FREE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_get_quota), SMB_VFS_OP_GET_QUOTA, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_set_quota), SMB_VFS_OP_SET_QUOTA, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_get_shadow_copy_data), SMB_VFS_OP_GET_SHADOW_COPY_DATA, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_statvfs), SMB_VFS_OP_STATVFS, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fs_capabilities), SMB_VFS_OP_FS_CAPABILITIES, - SMB_VFS_LAYER_OPAQUE}, + .connect_fn = vfswrap_connect, + .disconnect = vfswrap_disconnect, + .disk_free = vfswrap_disk_free, + .get_quota = vfswrap_get_quota, + .set_quota = vfswrap_set_quota, + .get_shadow_copy_data = vfswrap_get_shadow_copy_data, + .statvfs = vfswrap_statvfs, + .fs_capabilities = vfswrap_fs_capabilities, /* Directory operations */ - {SMB_VFS_OP(vfswrap_opendir), SMB_VFS_OP_OPENDIR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_readdir), SMB_VFS_OP_READDIR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_seekdir), SMB_VFS_OP_SEEKDIR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_telldir), SMB_VFS_OP_TELLDIR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_rewinddir), SMB_VFS_OP_REWINDDIR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_mkdir), SMB_VFS_OP_MKDIR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_rmdir), SMB_VFS_OP_RMDIR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_closedir), SMB_VFS_OP_CLOSEDIR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_init_search_op), SMB_VFS_OP_INIT_SEARCH_OP, - SMB_VFS_LAYER_OPAQUE}, + .opendir = vfswrap_opendir, + .readdir = vfswrap_readdir, + .seekdir = vfswrap_seekdir, + .telldir = vfswrap_telldir, + .rewind_dir = vfswrap_rewinddir, + .mkdir = vfswrap_mkdir, + .rmdir = vfswrap_rmdir, + .closedir = vfswrap_closedir, + .init_search_op = vfswrap_init_search_op, /* File operations */ - {SMB_VFS_OP(vfswrap_open), SMB_VFS_OP_OPEN, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_create_file), SMB_VFS_OP_CREATE_FILE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_close), SMB_VFS_OP_CLOSE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_read), SMB_VFS_OP_READ, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_pread), SMB_VFS_OP_PREAD, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_write), SMB_VFS_OP_WRITE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_pwrite), SMB_VFS_OP_PWRITE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_lseek), SMB_VFS_OP_LSEEK, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sendfile), SMB_VFS_OP_SENDFILE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_recvfile), SMB_VFS_OP_RECVFILE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_rename), SMB_VFS_OP_RENAME, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fsync), SMB_VFS_OP_FSYNC, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_stat), SMB_VFS_OP_STAT, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fstat), SMB_VFS_OP_FSTAT, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_lstat), SMB_VFS_OP_LSTAT, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_get_alloc_size), SMB_VFS_OP_GET_ALLOC_SIZE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_unlink), SMB_VFS_OP_UNLINK, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_chmod), SMB_VFS_OP_CHMOD, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fchmod), SMB_VFS_OP_FCHMOD, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_chown), SMB_VFS_OP_CHOWN, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fchown), SMB_VFS_OP_FCHOWN, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_lchown), SMB_VFS_OP_LCHOWN, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_chdir), SMB_VFS_OP_CHDIR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_getwd), SMB_VFS_OP_GETWD, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_ntimes), SMB_VFS_OP_NTIMES, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_ftruncate), SMB_VFS_OP_FTRUNCATE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_lock), SMB_VFS_OP_LOCK, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_kernel_flock), SMB_VFS_OP_KERNEL_FLOCK, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_linux_setlease), SMB_VFS_OP_LINUX_SETLEASE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_getlock), SMB_VFS_OP_GETLOCK, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_symlink), SMB_VFS_OP_SYMLINK, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_readlink), SMB_VFS_OP_READLINK, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_link), SMB_VFS_OP_LINK, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_mknod), SMB_VFS_OP_MKNOD, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_realpath), SMB_VFS_OP_REALPATH, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_notify_watch), SMB_VFS_OP_NOTIFY_WATCH, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_chflags), SMB_VFS_OP_CHFLAGS, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_file_id_create), SMB_VFS_OP_FILE_ID_CREATE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_streaminfo), SMB_VFS_OP_STREAMINFO, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_get_real_filename), SMB_VFS_OP_GET_REAL_FILENAME, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_connectpath), SMB_VFS_OP_CONNECTPATH, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_brl_lock_windows), SMB_VFS_OP_BRL_LOCK_WINDOWS, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_brl_unlock_windows),SMB_VFS_OP_BRL_UNLOCK_WINDOWS, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_brl_cancel_windows),SMB_VFS_OP_BRL_CANCEL_WINDOWS, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_strict_lock), SMB_VFS_OP_STRICT_LOCK, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_strict_unlock), SMB_VFS_OP_STRICT_UNLOCK, - SMB_VFS_LAYER_OPAQUE}, + .open = vfswrap_open, + .create_file = vfswrap_create_file, + .close_fn = vfswrap_close, + .vfs_read = vfswrap_read, + .pread = vfswrap_pread, + .write = vfswrap_write, + .pwrite = vfswrap_pwrite, + .lseek = vfswrap_lseek, + .sendfile = vfswrap_sendfile, + .recvfile = vfswrap_recvfile, + .rename = vfswrap_rename, + .fsync = vfswrap_fsync, + .stat = vfswrap_stat, + .fstat = vfswrap_fstat, + .lstat = vfswrap_lstat, + .get_alloc_size = vfswrap_get_alloc_size, + .unlink = vfswrap_unlink, + .chmod = vfswrap_chmod, + .fchmod = vfswrap_fchmod, + .chown = vfswrap_chown, + .fchown = vfswrap_fchown, + .lchown = vfswrap_lchown, + .chdir = vfswrap_chdir, + .getwd = vfswrap_getwd, + .ntimes = vfswrap_ntimes, + .ftruncate = vfswrap_ftruncate, + .lock = vfswrap_lock, + .kernel_flock = vfswrap_kernel_flock, + .linux_setlease = vfswrap_linux_setlease, + .getlock = vfswrap_getlock, + .symlink = vfswrap_symlink, + .vfs_readlink = vfswrap_readlink, + .link = vfswrap_link, + .mknod = vfswrap_mknod, + .realpath = vfswrap_realpath, + .notify_watch = vfswrap_notify_watch, + .chflags = vfswrap_chflags, + .file_id_create = vfswrap_file_id_create, + .streaminfo = vfswrap_streaminfo, + .get_real_filename = vfswrap_get_real_filename, + .connectpath = vfswrap_connectpath, + .brl_lock_windows = vfswrap_brl_lock_windows, + .brl_unlock_windows = vfswrap_brl_unlock_windows, + .brl_cancel_windows = vfswrap_brl_cancel_windows, + .strict_lock = vfswrap_strict_lock, + .strict_unlock = vfswrap_strict_unlock, /* NT ACL operations. */ - {SMB_VFS_OP(vfswrap_fget_nt_acl), SMB_VFS_OP_FGET_NT_ACL, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_get_nt_acl), SMB_VFS_OP_GET_NT_ACL, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL, - SMB_VFS_LAYER_OPAQUE}, + .fget_nt_acl = vfswrap_fget_nt_acl, + .get_nt_acl = vfswrap_get_nt_acl, + .fset_nt_acl = vfswrap_fset_nt_acl, /* POSIX ACL operations. */ - {SMB_VFS_OP(vfswrap_chmod_acl), SMB_VFS_OP_CHMOD_ACL, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fchmod_acl), SMB_VFS_OP_FCHMOD_ACL, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_get_entry), SMB_VFS_OP_SYS_ACL_GET_ENTRY, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_get_tag_type), SMB_VFS_OP_SYS_ACL_GET_TAG_TYPE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_get_permset), SMB_VFS_OP_SYS_ACL_GET_PERMSET, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_get_qualifier), SMB_VFS_OP_SYS_ACL_GET_QUALIFIER, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_get_file), SMB_VFS_OP_SYS_ACL_GET_FILE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_get_fd), SMB_VFS_OP_SYS_ACL_GET_FD, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_clear_perms), SMB_VFS_OP_SYS_ACL_CLEAR_PERMS, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_add_perm), SMB_VFS_OP_SYS_ACL_ADD_PERM, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_to_text), SMB_VFS_OP_SYS_ACL_TO_TEXT, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_init), SMB_VFS_OP_SYS_ACL_INIT, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_create_entry), SMB_VFS_OP_SYS_ACL_CREATE_ENTRY, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_set_tag_type), SMB_VFS_OP_SYS_ACL_SET_TAG_TYPE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_set_qualifier), SMB_VFS_OP_SYS_ACL_SET_QUALIFIER, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_set_permset), SMB_VFS_OP_SYS_ACL_SET_PERMSET, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_valid), SMB_VFS_OP_SYS_ACL_VALID, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_set_file), SMB_VFS_OP_SYS_ACL_SET_FILE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_set_fd), SMB_VFS_OP_SYS_ACL_SET_FD, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_delete_def_file), SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_get_perm), SMB_VFS_OP_SYS_ACL_GET_PERM, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_free_text), SMB_VFS_OP_SYS_ACL_FREE_TEXT, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_free_acl), SMB_VFS_OP_SYS_ACL_FREE_ACL, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_sys_acl_free_qualifier), SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER, - SMB_VFS_LAYER_OPAQUE}, + .chmod_acl = vfswrap_chmod_acl, + .fchmod_acl = vfswrap_fchmod_acl, + + .sys_acl_get_entry = vfswrap_sys_acl_get_entry, + .sys_acl_get_tag_type = vfswrap_sys_acl_get_tag_type, + .sys_acl_get_permset = vfswrap_sys_acl_get_permset, + .sys_acl_get_qualifier = vfswrap_sys_acl_get_qualifier, + .sys_acl_get_file = vfswrap_sys_acl_get_file, + .sys_acl_get_fd = vfswrap_sys_acl_get_fd, + .sys_acl_clear_perms = vfswrap_sys_acl_clear_perms, + .sys_acl_add_perm = vfswrap_sys_acl_add_perm, + .sys_acl_to_text = vfswrap_sys_acl_to_text, + .sys_acl_init = vfswrap_sys_acl_init, + .sys_acl_create_entry = vfswrap_sys_acl_create_entry, + .sys_acl_set_tag_type = vfswrap_sys_acl_set_tag_type, + .sys_acl_set_qualifier = vfswrap_sys_acl_set_qualifier, + .sys_acl_set_permset = vfswrap_sys_acl_set_permset, + .sys_acl_valid = vfswrap_sys_acl_valid, + .sys_acl_set_file = vfswrap_sys_acl_set_file, + .sys_acl_set_fd = vfswrap_sys_acl_set_fd, + .sys_acl_delete_def_file = vfswrap_sys_acl_delete_def_file, + .sys_acl_get_perm = vfswrap_sys_acl_get_perm, + .sys_acl_free_text = vfswrap_sys_acl_free_text, + .sys_acl_free_acl = vfswrap_sys_acl_free_acl, + .sys_acl_free_qualifier = vfswrap_sys_acl_free_qualifier, /* EA operations. */ - - {SMB_VFS_OP(vfswrap_getxattr), SMB_VFS_OP_GETXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_lgetxattr), SMB_VFS_OP_LGETXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fgetxattr), SMB_VFS_OP_FGETXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_listxattr), SMB_VFS_OP_LISTXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_llistxattr), SMB_VFS_OP_LLISTXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_flistxattr), SMB_VFS_OP_FLISTXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_removexattr), SMB_VFS_OP_REMOVEXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_lremovexattr), SMB_VFS_OP_LREMOVEXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fremovexattr), SMB_VFS_OP_FREMOVEXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_setxattr), SMB_VFS_OP_SETXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_lsetxattr), SMB_VFS_OP_LSETXATTR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_fsetxattr), SMB_VFS_OP_FSETXATTR, - SMB_VFS_LAYER_OPAQUE}, - - {SMB_VFS_OP(vfswrap_aio_read), SMB_VFS_OP_AIO_READ, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_aio_write), SMB_VFS_OP_AIO_WRITE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_aio_return), SMB_VFS_OP_AIO_RETURN, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_aio_cancel), SMB_VFS_OP_AIO_CANCEL, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_aio_error), SMB_VFS_OP_AIO_ERROR, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_aio_fsync), SMB_VFS_OP_AIO_FSYNC, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_aio_suspend),SMB_VFS_OP_AIO_SUSPEND, - SMB_VFS_LAYER_OPAQUE}, - - {SMB_VFS_OP(vfswrap_aio_force), SMB_VFS_OP_AIO_FORCE, - SMB_VFS_LAYER_OPAQUE}, - - {SMB_VFS_OP(vfswrap_is_offline),SMB_VFS_OP_IS_OFFLINE, - SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(vfswrap_set_offline),SMB_VFS_OP_SET_OFFLINE, - SMB_VFS_LAYER_OPAQUE}, - - /* Finish VFS operations definition */ - - {SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, - SMB_VFS_LAYER_NOOP} + .getxattr = vfswrap_getxattr, + .lgetxattr = vfswrap_lgetxattr, + .fgetxattr = vfswrap_fgetxattr, + .listxattr = vfswrap_listxattr, + .llistxattr = vfswrap_llistxattr, + .flistxattr = vfswrap_flistxattr, + .removexattr = vfswrap_removexattr, + .lremovexattr = vfswrap_lremovexattr, + .fremovexattr = vfswrap_fremovexattr, + .setxattr = vfswrap_setxattr, + .lsetxattr = vfswrap_lsetxattr, + .fsetxattr = vfswrap_fsetxattr, + + /* aio operations */ + .aio_read = vfswrap_aio_read, + .aio_write = vfswrap_aio_write, + .aio_return_fn = vfswrap_aio_return, + .aio_cancel = vfswrap_aio_cancel, + .aio_error_fn = vfswrap_aio_error, + .aio_fsync = vfswrap_aio_fsync, + .aio_suspend = vfswrap_aio_suspend, + .aio_force = vfswrap_aio_force, + + /* offline operations */ + .is_offline = vfswrap_is_offline, + .set_offline = vfswrap_set_offline }; NTSTATUS vfs_default_init(void); NTSTATUS vfs_default_init(void) { - unsigned int needed = SMB_VFS_OP_LAST + 1; /* convert from index to count */ - - if (ARRAY_SIZE(vfs_default_ops) != needed) { - DEBUG(0, ("%s: %u ops registered, but %u ops are required\n", - DEFAULT_VFS_MODULE_NAME, (unsigned int)ARRAY_SIZE(vfs_default_ops), needed)); - smb_panic("operation(s) missing from default VFS module"); - } - return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, - DEFAULT_VFS_MODULE_NAME, vfs_default_ops); + DEFAULT_VFS_MODULE_NAME, &vfs_default_fns); } + + |