SMB_VFS_NEXT_REWINDDIR(handle, dirp);
}
-static int skel_mkdir(vfs_handle_struct *handle,
+static int skel_mkdirat(vfs_handle_struct *handle,
+ struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
mode_t mode)
{
- return SMB_VFS_NEXT_MKDIR(handle, smb_fname, mode);
-}
-
-static int skel_rmdir(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
-{
- return SMB_VFS_NEXT_RMDIR(handle, smb_fname);
+ return SMB_VFS_NEXT_MKDIRAT(handle,
+ dirfsp,
+ smb_fname,
+ mode);
}
static int skel_closedir(vfs_handle_struct *handle, DIR *dir)
return SMB_VFS_NEXT_GET_ALLOC_SIZE(handle, fsp, sbuf);
}
-static int skel_unlink(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
+static int skel_unlinkat(vfs_handle_struct *handle,
+ struct files_struct *dirfsp,
+ const struct smb_filename *smb_fname,
+ int flags)
{
- return SMB_VFS_NEXT_UNLINK(handle, smb_fname);
+ return SMB_VFS_NEXT_UNLINKAT(handle,
+ dirfsp,
+ smb_fname,
+ flags);
}
static int skel_chmod(vfs_handle_struct *handle,
return SMB_VFS_NEXT_FCHMOD(handle, fsp, mode);
}
-static int skel_chown(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- uid_t uid,
- gid_t gid)
-{
- return SMB_VFS_NEXT_CHOWN(handle, smb_fname, uid, gid);
-}
-
static int skel_fchown(vfs_handle_struct *handle, files_struct *fsp,
uid_t uid, gid_t gid)
{
return SMB_VFS_NEXT_KERNEL_FLOCK(handle, fsp, share_mode, access_mask);
}
+static int skel_fcntl(struct vfs_handle_struct *handle,
+ struct files_struct *fsp, int cmd, va_list cmd_arg)
+{
+ void *arg;
+ va_list dup_cmd_arg;
+ int result;
+
+ va_copy(dup_cmd_arg, cmd_arg);
+ arg = va_arg(dup_cmd_arg, void *);
+ result = SMB_VFS_NEXT_FCNTL(handle, fsp, cmd, arg);
+ va_end(dup_cmd_arg);
+
+ return result;
+}
+
static int skel_linux_setlease(struct vfs_handle_struct *handle,
struct files_struct *fsp, int leasetype)
{
return SMB_VFS_NEXT_GETLOCK(handle, fsp, poffset, pcount, ptype, ppid);
}
-static int skel_symlink(vfs_handle_struct *handle,
+static int skel_symlinkat(vfs_handle_struct *handle,
const char *link_contents,
+ struct files_struct *dirfsp,
const struct smb_filename *new_smb_fname)
{
- return SMB_VFS_NEXT_SYMLINK(handle, link_contents, new_smb_fname);
+ return SMB_VFS_NEXT_SYMLINKAT(handle,
+ link_contents,
+ dirfsp,
+ new_smb_fname);
}
-static int skel_vfs_readlink(vfs_handle_struct *handle,
+static int skel_vfs_readlinkat(vfs_handle_struct *handle,
+ files_struct *dirfsp,
const struct smb_filename *smb_fname,
char *buf,
size_t bufsiz)
{
- return SMB_VFS_NEXT_READLINK(handle, smb_fname, buf, bufsiz);
-}
-
-static int skel_link(vfs_handle_struct *handle,
- const struct smb_filename *old_smb_fname,
- const struct smb_filename *new_smb_fname)
-{
- return SMB_VFS_NEXT_LINK(handle, old_smb_fname, new_smb_fname);
+ return SMB_VFS_NEXT_READLINKAT(handle,
+ dirfsp,
+ smb_fname,
+ buf,
+ bufsiz);
}
static int skel_linkat(vfs_handle_struct *handle,
flags);
}
-static int skel_mknod(vfs_handle_struct *handle,
+static int skel_mknodat(vfs_handle_struct *handle,
+ files_struct *dirfsp,
const struct smb_filename *smb_fname,
mode_t mode,
SMB_DEV_T dev)
{
- return SMB_VFS_NEXT_MKNOD(handle, smb_fname, mode, dev);
+ return SMB_VFS_NEXT_MKNODAT(handle,
+ dirfsp,
+ smb_fname,
+ mode,
+ dev);
}
static struct smb_filename *skel_realpath(vfs_handle_struct *handle,
.seekdir_fn = skel_seekdir,
.telldir_fn = skel_telldir,
.rewind_dir_fn = skel_rewind_dir,
- .mkdir_fn = skel_mkdir,
- .rmdir_fn = skel_rmdir,
+ .mkdirat_fn = skel_mkdirat,
.closedir_fn = skel_closedir,
/* File operations */
.fstat_fn = skel_fstat,
.lstat_fn = skel_lstat,
.get_alloc_size_fn = skel_get_alloc_size,
- .unlink_fn = skel_unlink,
+ .unlinkat_fn = skel_unlinkat,
.chmod_fn = skel_chmod,
.fchmod_fn = skel_fchmod,
- .chown_fn = skel_chown,
.fchown_fn = skel_fchown,
.lchown_fn = skel_lchown,
.chdir_fn = skel_chdir,
.fallocate_fn = skel_fallocate,
.lock_fn = skel_lock,
.kernel_flock_fn = skel_kernel_flock,
+ .fcntl_fn = skel_fcntl,
.linux_setlease_fn = skel_linux_setlease,
.getlock_fn = skel_getlock,
- .symlink_fn = skel_symlink,
- .readlink_fn = skel_vfs_readlink,
- .link_fn = skel_link,
+ .symlinkat_fn = skel_symlinkat,
+ .readlinkat_fn = skel_vfs_readlinkat,
.linkat_fn = skel_linkat,
- .mknod_fn = skel_mknod,
+ .mknodat_fn = skel_mknodat,
.realpath_fn = skel_realpath,
.chflags_fn = skel_chflags,
.file_id_create_fn = skel_file_id_create,